Android笔记--简单的Fragment和Activity的之间的数据交互(传值)
来源:互联网 发布:ai制图软件 编辑:程序博客网 时间:2024/06/07 21:45
通过点击MainActivity里的按钮传一个字符串给MainActivity2的fragment里的textview,并显示出来。
1、在MainActivity下:通过intent先把字符串传给MainActivity2。
btn=(Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent(MainActivity.this,MainActivity2.class);
intent.putExtra(MainActivity.Value, "传值到MainActiviy2的fragment中");
startActivity(intent);
}
});
2、在MainActivity2下:
title = getIntent().getStringExtra(MainActivity.Value); //MainActivity2接收到字符串后。
FragmentManager fm = getSupportFragmentManager(); //使用FragmentManager,管理Activity中的fragment
Fragment fragment = fm.findFragmentById(R.id.fragment); //找到相应的fragment
Bundle bundle = new Bundle();
bundle.putString(MainActivity2.Arguments, title);
MyFragment2 myFragment2 = new MyFragment2();
myFragment2.setArguments(bundle); //通过setArguments传值
fm.beginTransaction().add(R.id.layout, myFragment2).commit(); //通过add()将布局加入fragment容器中
3、在MyFragment2下:
TextView tv = (TextView) view.findViewById(R.id.textView1);
Bundle bundle = getArguments(); //getArguments()获取Activity通过setArguments传递的值
if (bundle != null) {
String text = bundle.getString(MainActivity2.Arguments);
tv.setText(text); //将内容显示在textview上,完成传值
}
通过点击MainActivity里的fragment的按钮传一个字符串给MainActivity的textview,并显示出来。
具体方法是通过接口回调来实现
1、在MyFragment下:
public interface MyListener //定义一个内部接口
{
public void transmit(String value); //定义一个方法,实现该接口的类必须实现该方法
}
public MyListener listener; //声明接口
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
listener=(MyListener) activity; //将activity的对象传递给listener,相当于实例化,个人理解,因为抽象类不能被实例化
super.onAttach(activity);
}
Button btn=(Button) view.findViewById(R.id.btn_transmit);
btn.setOnClickListener(new OnClickListener() {//fragment里的按钮的点击监听,当点击该按钮将触发回调
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
listener.transmit("fragment通过回调函数传值给activity");
}
});
2、在MainActivity下:
先实现MyListener接口
@Override
public void transmit(String value) { //实现方法
// TODO Auto-generated method stub
TextView tv=(TextView) findViewById(R.id.tv_transmit);
tv.setText(value); //将MainActivity里的fragment传来的值显示在textview上
}
- Android笔记--简单的Fragment和Activity的之间的数据交互(传值)
- Android fragment和activity之间的数据传递交互
- activity与fragment之间的数据交互
- Fragment与Activity之间的数据交互
- Fragment与Activity之间的数据交互
- Android进阶之Fragment与Activity之间的数据交互
- Fragment和Activity之间的交互
- Fragment和Activity之间的交互
- Android Fragment和Activity的交互介绍
- Android Activity、Fragment之间的数据传递和返回
- fragment和activity之间的数据传递
- Fragment和Activity之间的数据传递
- Activity和Fragment之间的数据传递
- Activity 和 Fragment 之间的数据传递
- Fragment和Activity之间的数据传递
- Fragment与Fragment之间的数据交互
- Fragment和Activity的交互
- Fragment和Activity的交互
- 人脸识别初步
- Android学习之 启动模式
- Linux常用命令ls详解
- WIN8.1为OK6410安装linux3.0.1遇到的若干问题总结以及解决方案
- Html5 手机wap开发、微信开发、APP开发的优缺点-创业者必知
- Android笔记--简单的Fragment和Activity的之间的数据交互(传值)
- Python生成器generator之next和send运行流程
- android 定时任务 隔一段时间执行 开启 关闭
- 今日BBC
- 蓝桥杯 啤酒和饮料(精度问题)
- 字符串比大小
- web应用和web.xml
- Hadoop put file 错误:fs.FSInputChecker: Found checksum error
- NUnit3之NUnitLite使用小记