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上
}

相关源码下载:http://download.csdn.net/detail/weilexuexia/9459268

0 0
原创粉丝点击