Android Fragment 与 Activity 的交互

Android Fragment 与 Activity 的交互场景主要有两种: 组件获取 和 数据传递

  1. 组件获取

    Fragment 获得 Activity 中的组件

    getActivity().findViewById(R.id.list);
    

    Activity 获得 Fragment 中的组件(根据 id 或 tag 都可以)

    getFragmentManager.findFragmentByid(R.id.fragment1);
    
  2. 数据传递

    1. Activity 传递数据给 Fragment

      在 Activity 中创建 Bundle 数据包,调用 Fragment 实例的 setArguments(bundle) 从而将 Bundle数据包传给 Fragment,然后 Fragment 中调用 getArguments() 获得 Bundle 对象,最后进行解析就可以了

    2. Fragment 传递数据给 Activity

      在 Fragment 中定义一个内部回调接口,再让包含该 Fragment 的 Activity 实现该回调接口,Fragment 就可以通过回调接口传数据了

    3. Fragment 与 Fragment 之间的数据互传

      找到要接受数据的 Fragment 对象,直接调用 setArguments() 传数据进去就可以了

      一般情况下时 replace 时,即 fragment 跳转的时候传数据的,那么只需要在初始化要跳转的 Fragment 后调用 `setArguments() 方法传入数据即可

      如果是两个 Fragment 需要即时传数据,而非跳转的话,就需要以Activity为媒介,先在 Activity 获得 f1 传过来的数据,再传到f2了,就是~

      FragmentManager fManager = getSupportFragmentManager( );
      FragmentTransaction fTransaction = fManager.beginTransaction();
      Fragmentthree t1 = new Fragmentthree();
      Fragmenttwo t2 = new Fragmenttwo();
      Bundle bundle = new Bundle();
      bundle.putString("key",id);
      t2.setArguments(bundle); 
      fTransaction.add(R.id.fragmentRoot, t2, "~~~");  
      fTransaction.addToBackStack(t1);  
      fTransaction.commit();
      

Fragment 传递数据给 Activity

  1. 在 Fragment 中定义一个回调接口

    public interface CallBack{  
        /*定义一个获取信息的方法*/  
        public void getResult(String result);  
    }
    
  2. 在 Fragment 中实现接口回调

    /*接口回调*/  
    public void getData(CallBack callBack){  
        /*获取文本框的信息,当然你也可以传其他类型的参数,看需求咯*/  
        String msg = editText.getText().toString();  
        callBack.getResult(msg);  
    }
    
  3. 在 Activity 中使用接口回调方法读数据

    /* 使用接口回调的方法获取数据 */  
    leftFragment.getData(new CallBack() {  
     @Override  
           public void getResult(String result) {              /*打印信息*/  
                Toast.makeText(MainActivity.this, "-->>" + result, 1).show();  
                }
            });
    

参考文档

  1. Android Fragment

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

♥   简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.