怎么在viewpager中获取子fragment里面的控件

怎么在viewpager中获取子fragment里面的控件,第1张

想要 *** 控viewpager中获取焦点的fragment的控件,但是并没有getCurrentFragment 等类似的方法,但是提供了setPrimaryItem方法,但是这个实在adapter里面的,所有我们像个办法让他把当前的fragment从adapter中传出来,那么就要重写fragmentpageradapter

代码如下:

public class MyFragmentAdapter extends FragmentPagerAdapter {

public Fragment currentFragment;

public MyFragmentAdapter(FragmentManager fm, List<Fragment> list) {

super(fm);

thislist=list;

}

@Override

public void setPrimaryItem(ViewGroup container, int position, Object object) {

thiscurrentFragment= (Fragment) object;

supersetPrimaryItem(container, position, object);

}

@Override

public Fragment getItem(int position) {

return 。。。;

}

@Override

public int getCount() {

return。。。;

}

}

123456789101112131415161718192021222324252627

这样我们就可以通过外部调用currentFragment来获取当前fragment,

如:

((MyFragmentAdapter)viewPagergetAdapter())currentFragment

然后强转成你需要的fragment就可以啦。

调用方法的时候只要,fragmentgetView()finViewById();

比如:

MyFragment mf= (MyFragment ) ((MyFragmentAdapter)viewPagergetAdapter())currentFragment;

//找到控件

ScrollView scrollview= (ScrollView) mfgetView()findViewById(Ridtuijian_scrollview);

Fragment能getActivity()getApplicationContext() 仅供参考

fragment里面有getActivity()方法可以获取fragment所在的activity,fragemt和activity通信问题网上很多资料

一种思路是定义一个接口,如 OnDecoratorSelectListener,然后Activity实现这个接口,当Fragment里面选择了一个脸型的时候,调用((OnDecoratorSelectListener)getActivity)onDecoratorSelect(xxx);

未必正确,仅供参考

可以分为下面的几部分:

使用支持库

创建一个Fragment

创建一个动态UI

多个Fragment之间的通信

1、使用支持库

如果您的应用需要运行在30及以上的版本,可以忽略这部分内容。

如果您的应用使用在30以下、16及以上的版本,需要使用支持库来构建。

使用支持库的步骤:

使用SDK下的SDK Manager工具下载Android Support Package

2 在您的Android工程的顶级目录下创建一个libs目录

3 找到您的SDK下的/extras/android/support/v4/android-support-v4jar,并且拷贝到您的项目的libs下,选中这个jar包 → 右键 → Build Path → Add to Build Path

4在您的项目的Manifestxml文件的<manifest>标签下添加:

<uses-sdkandroid:minSdkVersion="4"

android:targetSdkVersion="8"/>

其中targetSdkVersion是您的软件最小支持的版本

5如果您的项目支持30以下的版本,请导入如下的包:androidsupportv4;

在使用Fragment的Activity请继承FragmentActivity而不是Activity。如果您的系统是30或以上版本,同样需要导入类似的包,但是可以使用普通的Activity。

2、创建一个Fragment

Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等。可以看做是一个子Activity。

创建一个Fragment

创建一个Fragment和创建一个Activity很类似,继承Fragment类,重写生命周期方法,主要的不同之处就是需要重写一个onCreateView()方法来返回这个Fragment的布局。例子:

Fragment的生命周期方法依赖于Activity的生命周期,例如一个Activity的onPause()的生命周期方法被调用的时候这个Activity中的所有的Fragment的onPause()方法也将被调用。

更多的内容请参照类Fragment。

使用XML添加Fragment到Activity

尽管Fragment可以被多个Activity重用,但是您也必须把Fragment关联到一个FragmentActivity上。可以使用XML布局文件的方式来实现这种关联。

说明:上面的所说的FragmentActivity适用在API在30以下的版本,30及以上的版本可以使用普通的Activity。

Fragment的生命周期方法依赖于Activity的生命周期,例如一个Activity的onPause()的生命周期方法被调用的时候这个Activity中的所有的Fragment的onPause()方法也将被调用。

更多的内容请参照类Fragment。

使用XML添加Fragment到Activity

尽管Fragment可以被多个Activity重用,但是您也必须把Fragment关联到一个FragmentActivity上。可以使用XML布局文件的方式来实现这种关联。

说明:上面的所说的FragmentActivity适用在API在30以下的版本,30及以上的版本可以使用普通的Activity。

4、与其他Fragment的交互

两个单独的Fragment之间是不应该进行通信的。应该使用他们所存在的Activity作为沟通的纽带。

为了实现两个Fragment的交互,您可以在Fragment中定义一个接口,然后再这个接口中定义一个方法,在Fragment的onAttach()方法中调用这个接口中的方法。然后让Activity实现这个方法来完成Activity和Fragment之间的通信。

fragment中怎么读取sharedpreferences数据

获取SharedPreferences的两种方式:

1 调用Context对象的getSharedPreferences()方法

2 调用Activity对象的getPreferences()方法

两种方式的区别:

调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享

调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用

以上就是关于怎么在viewpager中获取子fragment里面的控件全部的内容,包括:怎么在viewpager中获取子fragment里面的控件、关于Fragment的Context怎么获取、android怎么获取fragment的fragmentactivity等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9558963.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存