这里有新鲜出炉的精品教程,程序狗速度看过来!
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
本篇文章主要介绍了详解 Android activity 与 fragment 之间的通信交互,具有一定的参考价值,有兴趣的可以了解一下
前言
纵观市场,大多数的 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;
- }
- }
- }
来源: http://www.phperz.com/article/17/0823/344200.html