Activity与Fragment如何通信
来源:互联网 发布:下载搜狐新闻软件 编辑:程序博客网 时间:2024/04/29 19:59
概述:
Activity向Fragment传值在很多app中都有类似的使用,虽然现在的eventBus和RxBus都可以代替Activity向Fragment传值,但是这里还是要记录下,毕竟不是所有项目中都使用了EventBus或者RxBus。
核心:
发送数据:
//Activity传值,通过BundleBundle bundle = new Bundle();bundle.putString("MainActivity", "Hello,Fragment");//首先有一个Fragment对象 调用这个对象的setArguments(bundle)传递数据myFragment.setArguments(bundle);//点击按钮接受Fragment传回来的值btn_send.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Bundle bundle = myFragment.getArguments(); String result = bundle.getString("MyFragment"); Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show(); }});
接收数据:
//点击按钮接收Activity传过来的值btn_fragment.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Bundle bundle = getArguments(); String result = bundle.getString("MainActivity"); Toast.makeText(getActivity(), result, Toast.LENGTH_LONG).show(); }});//Fragment回传值给ActivitygetArguments().putString("MyFragment", "Hello,Activity");
MainActivity.java:
public class MainActivity extends Activity { private Button btn_send; private MyFragment myFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_send = (Button)findViewById(R.id.button); FragmentManager manager = getFragmentManager(); FragmentTransaction transation = manager.beginTransaction(); myFragment = new MyFragment(); transation.add(R.id.layout_container_fragment, myFragment); transation.commit(); //Activity传值,通过Bundle Bundle bundle = new Bundle(); bundle.putString("MainActivity", "Hello,Fragment"); //首先有一个Fragment对象 调用这个对象的setArguments(bundle)传递数据 myFragment.setArguments(bundle); //点击按钮接受Fragment传回来的值 btn_send.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Bundle bundle = myFragment.getArguments(); String result = bundle.getString("MyFragment"); Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show(); } }); }}
MyFragment.java:
public class MyFragment extends Fragment{ private Button btn_fragment; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_fragment, container, false); btn_fragment = (Button)view.findViewById(R.id.button_fragment); //点击按钮接收Activity传过来的值 btn_fragment.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Bundle bundle = getArguments(); String result = bundle.getString("MainActivity"); Toast.makeText(getActivity(), result, Toast.LENGTH_LONG).show(); } }); //Fragment回传值给Activity getArguments().putString("MyFragment", "Hello,Activity"); return view; }}
activity_main.java:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:orientation="horizontal" > <Button android:id="@+id/button" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="接收Fragmeng传回的值" /> <LinearLayout android:id="@+id/layout_container_fragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="#50ff" android:orientation="vertical" ></LinearLayout></LinearLayout>
0 1
- Activity与Fragment如何通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Activity与Fragment通信
- Fragment与Activity通信
- Fragment与Activity通信
- Activity和Fragment如何通信?
- 【Android】Fragment与Activity通信
- Fragment与Activity进行通信
- Fragment与Activity通信 Android
- Activity与Fragment通信方式
- activity与fragment通信汇总
- 实现Fragment与Activity通信
- 解释器文件
- JSP搭建本地网页
- Amazon Dynamo论文解读 - Merkle Tree的使用
- 分辨率与行场同步信号的关系 场消隐
- 使用本地AOSP镜像快速获取Android代码
- Activity与Fragment如何通信
- spring中的@Transactional注解使用注意点
- java中不执行if语句
- Redis的安装和部署
- [Zlib]_[初级]_[使用zlib库压缩和解压字符串STL string]
- CentOS磁盘分区添加删除
- 1065. 单身狗(25)
- 关于virtualBox中最小化安装CentOS7系统,更改httpd.conf中的DocumentRoot之后访问出现Forbidden的问题
- 项目临时总结