Activity跳轉到巢狀中的Fragment
阿新 • • 發佈:2019-02-13
轉載請註明出處:http://blog.csdn.net/baidu_38639168/article/details/73456906
最近做的一個專案,突然出現了這個問題,Activity
中有四個fragment分別是 first, two, three, four,
預設顯示的是fragment a。在開發過程中,first中 跳轉
到另一個Activity ,將這個外部Activity命名為B吧...
我需要從first中跳轉到B中,完成一些設定,然後再從B中的返回按鈕回到three,three中也有一個viewpager(1,2,3),需要跳轉到3。但是使用startActivity()方法的結果是:可以實現從first到B的跳轉,但是從B跳到three出現了錯誤。苦思冥想一整天,找了好多部落格試了也沒有解決。第二天早上靈光一閃,改了幾個值,突然就跑通了。下面就分享一下這個案例。
首先是在B的跳轉到Activity,不多解釋,直接上程式碼
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i=new Intent(); i.setClass(BActivity.this, Activity.class); //一定要指定是第幾個pager,因為要跳到ThreeFragment,這裡填寫2 i.putExtra("id",2); startActivity(i); } }); 跳轉之後就是在Activity中,在這裡跳轉到three,這裡重寫了onResume()方法 相信有這個錯誤的童鞋一定都找過很多案例,這裡就不多做解釋了,直接上程式碼 //activity跳轉到fragment @Override protected void onResume() { int id = getIntent().getIntExtra("id", 0); if (id == 2) { Fragment fragmen = new ThreeFragment(); FragmentManager fmanger = getSupportFragmentManager(); FragmentTransaction transaction = fmanger.beginTransaction(); transaction.replace(R.id.viewpager, fragmen); transaction.commit(); mViewPager.setCurrentItem(2);// //幫助跳轉到指定子fragment Intent i=new Intent(); i.setClass(RadioActivity.this,ThreeFragment.class); i.putExtra("id",2); } super.onResume(); } 最後是在ThreeFragment中接收,上程式碼 @Override public void onResume() { int id = getActivity().getIntent().getIntExtra("id", 0); if(id==2){ vp.setCurrentItem(2); } super.onResume(); } 這樣就是全部的程式碼了。