android中fragment的使用及與activity之間的通信


一.fragment的生命周期,具體方法什么時候調用就不說了。

二 在activity中使用fragment和通信有兩種常見的方式,

1.靜態的方式

  (1)定義一個類繼承Fragment,如 MyFragment,這里復寫onCreateView()方法和onAttach()方法

  (2)onCreateView()加載一些布局對象以及設置View對象,並返回一個View對象,onAttach()通信的時候用到

  (3)在activity的layout的布局文件中引用Fragment繼承類(注意設置name屬性為MyFragment的全包名,另外設置id或者tag其中一種數據即可)

以上就可以在activity使用Fragment了,如果要互相通信,接着下面(包含上面 1 2 3步驟)

    (4.1)activity向Fragment發送數據

  (4.2)在MyFragment中定義私有成員變量,並實現get和set方法用來接收數據,直接上代碼

  FragmentManager fragmentManager = getFragmentManager();
  Fragment findFragmentById = fragmentManager.findFragmentById(R.id.fragment);
  MyFragment myFragment= (MyFragment) findFragmentById;// 找到fragment
  myFragment.setAa("avtivity傳的值");

  (4.3) 可以在MyFragment 通過getAa()獲取到數據了

  (5.1) Fragmenty向activit發送數據

  (5.2)通過成員變量

  (5.4)activity實現MyInterface 接口,就可以通過接口中的方法參數獲得傳進來的值

2動態的方式

  (1)定義一個類繼承Fragment,如 MyFragment,這里復寫onCreateView()方法和onAttach()方法

  (2)在activity中動態加載Fragment    

  MyFragment fragment2 = new MyFragment();
  FragmentManager fragmentManager = getFragmentManager();
  FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
  beginTransaction.add(R.id.ll_load_fragment, fragment2);//將fragment2 添加到id為ll_load_fragment的布局中
  beginTransaction.commit();

  (3.1)activity向Fragment傳值

  MyFragment fragment = new MyFragment();
  FragmentManager fragmentManager = getFragmentManager();
  FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
  Bundle bundle = new Bundle();
  String value = "activity傳的值";
  bundle.putString("name", value);
  fragment.setArguments(bundle);// 將bundle數據加到Fragment中
  beginTransaction.add(R.id.ll_load_fragment, fragment, "fragment");
  beginTransaction.commit();

  (3.2)在MyFragment 中通過getArguments().get(key)獲取值

  (4.1)Fragment向activity傳值 

   在MyFragment 中定義一個接口 

    private MyInterface myInterface;

    public interface MyInterface{

               public void sendMsg(Object object);
    }

  (4.2)通過onAttach(Activity activity)方法將activity轉為myInterface  

  public void onAttach(Activity activity) {
    myInterface=(MyInterface) activity;
    super.onAttach(activity);
  }

  利用接口實現Fragment與Activity的信息傳遞.
總結一下Fragment與Activity之間交換數據的方式:

動態
 * 1 Activity向Fragment傳遞數據
   fragment.setArguments(bundle)

 * 2 Fragment向Activity傳遞數據
 在Fragment內部定義一個回調接口.讓包含該Fragment的
 Activity實現該接口.這樣Fragment就可調用該回調方法
 將數據傳給Activity

靜態
 * 1 Activity向Fragment傳遞數據
  直接調用Fragment繼承類的set方法

 * 2 Fragment向Activity傳遞數據
 直接調用Fragment繼承類的get方法

 就是通過Fragment繼承類成員變量的get和set方法實現互相傳值

Flagment使用.zip


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM