多层嵌套Fragment获取父Activity(Fragment)控件及方法
来源:互联网 发布:ps游戏优化器 编辑:程序博客网 时间:2024/06/02 03:43
先说说父Activity
开局一张图
Fragment的生命周期大家都清楚,我就不一一赘述了,今天我们主要来说一下onAttach(),我们都知道onAttach()有两种重写方法,其中一种就是
@Override public void onAttach(Activity activity) { super.onAttach(activity); }
当执行该方法时,Fragment与Activity已经完成绑定,该方法有一个Activity类型的参数,代表绑定的Activity,这时候你可以执行诸如mActivity = activity的操作,这时你即可得到该Activity,初始化控件,便可更改其内容(项目需求,我用的是Textview),也可直接使用fatherActivity调用其内部方法
@Override public void onAttach(Activity activity) { super.onAttach(activity); if (activity instanceof FatherActivity) { FatherActivity fatherActivity= (FatherActivity) activity; textView= (TextView)fatherActivity.findViewById(R.id.textView); } }
很简单呢。。。。
然后再说说获取父类Fragment的方法,,,,,
刚开始时走进了误区,犯了经验错误,一直想用getParentFragment这个去得到父类的控件,但是一直报空指针异常,跳进源码看了下还是不得其解,源码解释是如果父类是一个Fragment则返回这个Fragment如果是一个Activity则返回null,但是这个父类确实Fragment啊,难道是说的是顶层的Activity?但是如果是顶层的Activity这个方法又有什么意义呢,于是百度了一番,也没找到具体的错误信息,但是功能还得做啊。。。
/** * Returns the parent Fragment containing this Fragment. If this Fragment * is attached directly to an Activity, returns null. */ final public Fragment getParentFragment() { return mParentFragment; }
一时没想到好的方法,于是很傻逼的在父Fragment重新掉了一次接口,,,,然后改变控件的显示内容。。。。是不是很傻逼,,,
直到今天不经意看代码是,想到了getActivity这个方法,,,,,于是开始干
TextView textview= (TextView) getActivity().findViewById(R.id.textview); txt_title.setText("你想修改的信息");
然后成功了。。。成功了。。。功了。。。了
调用父Fragment方法我的思路和在Activity中类似,类似这样
if(fragment instanceof FatherFragment){ ((FatherFragment) fragment ).youMethod(); }
但是怎么样得到Fragment呢?这是个问题,于是想到了getFragmentManager()这个方法里有个getFragments()方法,可以得到一个Fragment列表,我们只要循环下,然后就可以得到父Fragment的实例了
List<Fragment>list=(List<Fragment>)ChildFragment.this.getFragmentManager().getFragments();for(Fragment fragment: list){ if(fragment instanceof FatherFragment){ ((FatherFragment) fragment ).youMethod(); break; }}
运行代码,这样就可以了,不要问我为什么不用
(FatherFragment)(ChildFragment.this.getParentFragment())).youMethod();
因为我报空指针,,,还没找到原因。。。。。
- 多层嵌套Fragment获取父Activity(Fragment)控件及方法
- Fragment嵌套 子fragment获取父fragment控件
- Fragment 中获取父Activity控件
- Android主页面 多层Fragment嵌套(Fragment+ViewPager)滑动
- Android(Activity/Fragment)获取控件的大小
- Android(Activity/Fragment)获取控件的大小
- Android(Activity/Fragment)获取控件的大小
- Fragment和Activity的控件获取
- Fragment获取Activity,Activity获取Fragment
- 获取当前Activity及Fragment名字
- 获取当前Activity及Fragment名字
- 多层嵌套viewpage+fragment切换和显示
- Fragment 获取Activity 值或者方法
- Activity获取Fragment内控件的方法
- 多层fragment嵌套时 部分fragment的UI无法显示
- Fragment嵌套Fragment时候。子类fragment调用父容器Fragment方法
- 在Activity里嵌套Fragment
- activity中动态嵌套使用fragment的方法
- iOS开发 生成CSR(.certSigningRequest)文件
- jquery dom 文档对象操作,插入,删除,克隆,替换
- locust python 性能测试,简单好用
- Cordova --- 第三方app实现微信登录功能
- Fragment中监听Back返回键
- 多层嵌套Fragment获取父Activity(Fragment)控件及方法
- 计算机内存对数字的存储方式——原码、反码、补码
- hibernate中如何将图片转化成二进制信息存储
- Qt项目构建路径问题
- CAST AIP 用于AXA安盛集团的成功案例
- cpp模块中如何定义你的对外接口头文件
- AndroidStudio3.0正式版新建项目出现Error:Protocol family unavailable的解决办法
- noteBook3.1-CSS
- Ajax实现跨域的三种方法-java示例