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 中定义一个内部回调接口,再让包含该 FragmentActivity 实现该回调接口,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.