Fragment与Fragment、Activity通信的四种方式(二)
来源:互联网 发布:郑州seo服务公司 编辑:程序博客网 时间:2024/06/05 03:47
2.使用接口
接口可以实现两个Fragment之间的通信,也可以实现Fragment和Activity之间的通信,这大概是用的比较多的一种方式,也是个人比较推荐的一种方式,使用接口来实现两个Fragment之间通信,要通过宿主Activity中转一下,如果是Fragment和宿主Activity通信则直接调用即可。首先在左边的Fragment中定义一个接口:
public interface showPro {
public void showProByName(String name);
}
然后定义一个接口变量:
private showPro mCallback;
我们要在宿主Activity中实现这个接口,这样当Fragment调用onAttach方法时我们就可以实例化这个接口了:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (activity != null) {
mCallback = (showPro) activity;
}
}
当mCallback实例化之后,那么我们在点击列表中的某一项的时候就可以调用这里边的showProByName方法了:
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView nameTV = (TextView) view;
String name = nameTV.getText().toString();
if ("**".equals(name)) {
mCallback.showProByName(name);
}
}
});
当然,这个方法的具体实现在宿主Activity中,当宿主Activity实现了showPro接口之后,接着就要实现它里边的方法了:
public class MainActivity extends Activity implements showPro {
private ContentFragment cf;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getActionBar().hide();
cf = (ContentFragment) getFragmentManager().findFragmentById(
R.id.content_fg);
}
@Override
public void showProByName(String name) {
cf.showPro(name);
}
}
我们在接口的方法中调用右边Fragment中的showPro方法,并将当前人名作为参数传入,这个方法与1中相同,我就不贴代码了。这个方法与1中介绍的方法相比,虽然有点麻烦,但是可以有效的解决在一个Fragment中拿不到另一个Fragment实例的问题,具体应用场景就是ViewPager中的Fragment之间通信。
- Fragment与Fragment、Activity通信的四种方式(二)
- 关于Fragment与Fragment、Activity通信的四种方式
- 关于Fragment与Fragment、Activity通信的四种方式
- 关于Fragment与Fragment、Activity通信的四种方式
- 关于Fragment与Fragment、Activity通信的四种方式
- 关于Fragment与Fragment、Activity通信的四种方式
- Fragment与Fragment、Activity通信的四种方式(一)
- Fragment与Fragment、Activity通信的四种方式(三)
- 关于Fragment与Fragment、Activity通信的三种方式
- 关于Fragment与Fragment、Activity通信的五种方式
- Activity与Fragment的通信方式
- Fragment与Activity的相互通信(二)
- Activity与Fragment通信方式
- fragment与activity间的通信(二)
- 备忘宝小项目的总结(二) Fragment 与 Activity,与Fragment之间的通信
- Fragment与Activity的通信:
- Fragment与Activity的通信
- Fragment与Activity的通信
- android shape
- iOS 网络请求(AFNetworking)失败的错误码分析
- HttpServletResponse报错解决方案
- thinkphp自定义404页面
- 简单总结spark中executer的个数设置
- Fragment与Fragment、Activity通信的四种方式(二)
- 获取sha1码
- hadoop分布式模式的安装和配置
- 在阿里云上搭建svn
- 一个用java模拟ATM操作的小程序
- PHP邮件群发程序
- AppCompatActivity
- Bzoj 2002 弹飞绵羊
- Android中的WebView之loadDataWithBaseURL遇到的坑