fragment 總結(jié)

1、fragment生命周期

onAttach onCreate onCreateView onActivityCreated onStart onResume onPause onStop onDestroyView onDestroy onDetach

image

2、fragment與activity傳值

activity傳值給fragment:

  • 通過Bundle
Bundle bundle = new Bundle();
bundle.putString(Constant.INTENT_ID, productId);
Fragment fragment = new Fragment();
fragment.setArguments(bundel);
  • 在宿主Activity中定義方法,將要傳遞的值傳遞到Fragment中,在Fragment中的onAttach方法中,獲取到這個值

    (1)宿主activity中的getTitles()方法
        public String getTitles() {    
            return "hello";
        }
    (2)Fragment中的onAttach方法
        public void onAttach(Activity activity) { 
          super.onAttach(activity);
          //通過強轉(zhuǎn)成宿主activity,就可以獲取到傳遞過來的數(shù)據(jù)
          titles = ((MainActivity) activity).getTitles();
          }
    

fragment傳值給activity:

  • Handler方式,在activity中定義Handler,然后在fragment中獲取到activity的handler,發(fā)送消息

  • 廣播

  • EventBus

  • 在fragment中定義接口,然后activity中實現(xiàn)該接口

        //MainActivity實現(xiàn)MainFragment開放的接口                                
        public class MainActivity extends FragmentActivity implements FragmentListener{
        @override
        publicvoidtoH5Page(){ }
        }
        public class MainFragment extends Fragment{
            public FragmentListener mListener;
            //MainFragment開放的接口
            public static interface FragmentListener{
                //跳到h5頁面
                void   toH5Page();
            }

          @Override
          public void onAttach(Activity activity) {
              super.onAttach(activity);
              //對傳遞進(jìn)來的Activity進(jìn)行接口轉(zhuǎn)換
              if(activity instance FragmentListener){
                  mListener = ((FragmentListener)activity);
               }
          }
          ...其他處理
      }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容