Fragment与Activity通信

动态加载的Fragment

Activity => Fragment

实例化 bundle类 传递给 Fragment

//动态加载 fragment
        Fragment fragment = new Fragment(); //这个是我们自己定义的 Fragment
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        //实例化bundle类
        Bundle bundle = new Bundle();
        bundle.putString("title","学习雷锋好榜样");
        //传递数据
        fragment.setArguments(bundle);

        fragmentTransaction.addToBackStack(null); //后退按键 允许
        fragmentTransaction.add(R.id.linear,fragment);
        fragmentTransaction.commit();

Fragment =>Activity

实质就是调用Activity中的方法

Fragment.java

public interface MyListener{
        public void sayHello(String str);
    }

    @Override
    public void onAttach(Activity activity) {
        MyListener listener = (MyListener)getActivity();
        listener.sayHello("Fragment 传递给 Activity 的数据!");
        super.onAttach(activity);
    }

MainActivity.java

public class MainActivity extends ActionBarActivity implements Fragment.MyListener
...
...
   @Override
    public void sayHello(String str) {
        Toast.makeText(MainActivity.this,str,Toast.LENGTH_LONG).show();
    }

静态加载的Fragment

Activity => Fragment

实质就是调用Fragment类中的方法

public class Fragment extends android.app.Fragment {

    private String str;

    public void setStr(String str) {
        this.str = str;
    }

    public String getStr() {
        return str;
    }

MainActivity.java

FragmentManager fragmentManager = getFragmentManager();
        android.app.Fragment fragmentById = fragmentManager.findFragmentById(R.id.fragment);
        Fragment fragment = (Fragment)fragmentById;
        fragment.setStr("123");

注意:Fragment 的 onCreateView的时候,Activity中的 setStr没有执行
所以是无法在接收到的

Fragment =>Activity (和动态加载一致)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值