任意类,非acvitity类操作Fragment的方法,Fragment与任意类通信
2014-06-26 17:10
246 查看
大家都知道,Fragment 和Activity或者Fragment之间的通讯,网上搜索一大堆。而一个非Activity或fragment的类跟Fragment通信就比较少了。今天涉及到这样的问题,于是就稍微研究了下。下面讲讲:如果大家有更好的方法,更好的思路,或者我有说错的话,强烈欢迎各位大神指正我。谢谢。
补充一下知识先:WeakReference,看这段代码或许你就懂的了,
需求:
一个普通类要执行一个Fragment类中的一个方法。
步骤:
一、配置环境参数:
1、首先在管理该Fragment的activity(如:MainActivity)中,对MainActivity进行弱引用,WeakReference,就可以得到当前对象的弱引用。把弱引用对象传过去。
2、在普通类中声明静态MainActivity的变量,提供静态set方法,然后在MainActivity中执行setActivity(传递过去)
private static WeakReference<MainActivity> mMainActivity;
public static void setActivity(WeakReference<MainActivity> mainActivityWeakReference) {
PeopleListElement.mMainActivity = mainActivityWeakReference;
}
二、在普通类中。看代码
1、 FragmentManager fm = mMainActivity.get().getSupportFragmentManager();
mMainActivity.get():这就涉及到弱引用的知识。如果MainActivity(this)这个对象没有被gc回收那么, mMainActivity.get()就能得到它指向它,这样写你就懂了MainActivity mainActivity = mMainActivity.get();。这样就可以得到FragmentManager了。
2、有了FragmentManager还有啥问题的呢?还是说说吧,通过fm.findFragmentByTag("selection")找到要操作的Fragment,然后就可以调用里面的方法了,
谢谢大家,如果有错误,欢迎指正.
补充一下知识先:WeakReference,看这段代码或许你就懂的了,
public class WeakRefTest { public static void main(String[] args) { String a = new String("对象还在内存中!"); WeakReference b = new WeakReference(a); System.out.println(b.get()); //移除强引用 a = null; //通知gc... System.gc(); //对象被回收了么? if(b.get() == null) System.out.println("被回收了!"); else System.out.println(b.get()); System.exit(0); } }
需求:
一个普通类要执行一个Fragment类中的一个方法。
步骤:
一、配置环境参数:
1、首先在管理该Fragment的activity(如:MainActivity)中,对MainActivity进行弱引用,WeakReference,就可以得到当前对象的弱引用。把弱引用对象传过去。
WeakReference<MainActivity> mMainActivityWeakReference = new WeakReference<MainActivity>(this);
2、在普通类中声明静态MainActivity的变量,提供静态set方法,然后在MainActivity中执行setActivity(传递过去)
private static WeakReference<MainActivity> mMainActivity;
public static void setActivity(WeakReference<MainActivity> mainActivityWeakReference) {
PeopleListElement.mMainActivity = mainActivityWeakReference;
}
二、在普通类中。看代码
1、 FragmentManager fm = mMainActivity.get().getSupportFragmentManager();
mMainActivity.get():这就涉及到弱引用的知识。如果MainActivity(this)这个对象没有被gc回收那么, mMainActivity.get()就能得到它指向它,这样写你就懂了MainActivity mainActivity = mMainActivity.get();。这样就可以得到FragmentManager了。
2、有了FragmentManager还有啥问题的呢?还是说说吧,通过fm.findFragmentByTag("selection")找到要操作的Fragment,然后就可以调用里面的方法了,
谢谢大家,如果有错误,欢迎指正.
相关文章推荐
- 如何在一个fragment or 任意类中操作另一个fragment中的方法
- 黑马程序员--Java基础加强--15.利用反射操作泛型IV【通过反射Method解析泛型方法思路】【通过Method对四种Type子接口类型进行解剖】【使用递归对任意复合泛型类型进行彻底解剖】【个人
- 怎样在一个fragment or 随意类中操作还有一个fragment中的方法
- Acvitity和Fragment通信数据显示不同步的问题
- 把传过来的Object对象转换成Collection类型的对象。isArray()方法,判定此Class对象是否表示一个数组类。java.lang.reflect.Array 对任意数组进行操作
- 总结圣典中操作物体任意方向旋转的三种方法
- 原生js封装table表格操作,获取任意行列td,任意单行单列方法
- 总结圣典中操作物体任意方向旋转的三种方法
- javascript 在字符串中任意操作指定位置字符的方法
- Fragment基本使用方法和与activity的通信
- 操作物体任意方向旋转的三种方法
- Activity与Fragment通信——回调方法实现
- Fragment的基本使用方法与通信
- Fragment与Activity通信的两种方法
- Fragment的通信问题, 新建Fragment为何不要在构造方法中传递参数?
- 前端笔记 jQuery 属性操作 - attr() 方法 hover触摸变换 position hover控制display等任意属性
- android activity向fragment通信,获取fragment的三种方法
- Fragment的通信问题, 新建Fragment为何不要在构造方法中传递参数
- Android中不同Activity间所托管的Fragment通信的两种方法
- Fragment与Activity间的通信(方法概述)