②activity跳轉到fragment activity不能直接跳轉到fragment,需要先跳轉到fragment所附著的activity中,然后再更改activity當前顯示哪個fragment。
intent.put("id",1);//傳入一個flag,用來標識跳轉到哪一個fragment。FragmentTransaction ft = getSupportFragmentMannager().beginTransaction();//flag來判斷顯示哪個fragment。ft.replace(R.id.frame_content,new CenterFragment());*動態添加Fragment主要分為4步: 1.獲取到FragmentManager,在V4包中通過getSupportFragmentManager,在系統中原生的Fragment是通過getFragmentManager獲得的。 2.開啟一個事務,通過調用beginTransaction方法開啟。 3.向容器內加入Fragment,一般使用add或者replace方法實現,需要傳入容器的id和Fragment的實例。 4.提交事務,調用commit方法提交。*
fragment之間的跳轉 fragment必須附著在activity上,所以fragment之間的跳轉也必須依賴于activity。FragmentF必須放在FragmentLayout這個布局里面,所以要在xml中加上FragmentLayout這個標簽,并給id。FragmentManager fm = MainActivity.getSupportFragmentManager();//MainActivity當前fragment所附著的activityFragmentTransaction ft = fm.beginTransaction();MyFragment fragment = new MyFragment();ft.replace(R.id.fragment,fragment);ft.commit();// 最后不要忘記commitactivity之間的跳轉 ①不需要返回值的跳轉startActivity(new Intent(this,MyActivity.class));②帶返回值的跳轉 ActivityA中:
startActivityForResult(new Intent(this, ActivityB.class), requestCode);//并重寫onActivityResult方法,來響應ActivityB來的跳轉:PRotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);// 這里只需要判斷requestCode是否等于startActivityForResult()中的code,就可以知道是哪個跳轉的。switch (requestCode) {case Constant.result_select_province:if(data != null){// do something 當然做之前最好要判斷下data是否為null,預防發生空指針異常。}break;}ActivityB中:當要返回ActivityA的時候,要用setResult方法,具體如下:setResult(resultCode, Intent);
新聞熱點
疑難解答