酷抠族论坛,空调维修,美丽的梭罗河吉他谱
前言
纵观市场,大多数的app都采用导航+fragment这种设计模式,如微信,qq,京东,淘宝,究其原因:简洁。
在开发过程中不可避免的会出现fragment与fragment,fragment与activity之间的通信交互问题。
本章讲述如何实现fragment与activity之间的通信。
一、app构成
mainactivity+底部导航栏;
二、通信目的
mainactivity中成员方法test(),fragment中经test()方法判断后,方可执行下一步操作,如执行界面跳转;
例:
public class mainactivity extends activity{ public boolean mbaidusdk_is_ok = false; public boolean ismbaidusdk_is_ok() { return mbaidusdk_is_ok; } public void setmbaidusdk_is_ok(boolean mbaidusdk_is_ok) { this.mbaidusdk_is_ok = mbaidusdk_is_ok; } }
如上述示例代码,在fragment中需要对mbaidusdk_is_ok进行值判断,执行界面跳转;
三、解决方法
public class test1fragment extends fragment implements onclicklistener { private activity mactivity; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { mactivity = getactivity();//在界面创建时,定义父activity view = inflater.inflate(r.layout.fragment_test1, container, false); return view; } @override public void onviewcreated(view view, bundle savedinstancestate) { // fragment_test1 布局中的一个测试按钮 button test_button= (button) view.findviewbyid(r.id. test_button); test_button setonclicklistener(this);//设置按钮监听事件 super.onviewcreated(view, savedinstancestate); } @override public void onclick(view view) { // todo auto-generated method stub switch (view.getid()) { //测试按钮监听事件 case r.id.test_button: // mactivity即为代表的父activity intent intent = new intent(mactivity, secondactivity.class); log.i("baidusdk", "验证:" + ((mainactivity) mactivity).ismbaidusdk_is_ok()); //最为关键的一步,fragment调用父activity的成员方法,进行通信 if (((mainactivity) mactivity).ismbaidusdk_is_ok()) { startactivity(intent); } else { log.e("test","请确认mbaidusdk_is_ok是否正常!"); } break; } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android Manifest中meta-data扩展元素数据的配置与获取方式
Android实现获取meta-data和build.gradle的值
Android获取清单文件中的meta-data,解决碰到数值为null的问题
解决webview 第二次调用loadUrl页面不刷新的问题
解决Android WebView拦截url,视频播放加载失败的问题
Android webview加载https链接错误或无响应的解决
网友评论