2013-02-13 104 views
1

我使用ViewPagerFragmentPagerAdapter來承載四個不同的片段。用viewpager替換其他片段

我想實現的目標是成功用Fragment1替代,點擊一個按鈕。

當我使用..

FragmentManager fragmentManager = getSupportFragmentManager(); 
FragmentTransaction transaction = fragmentManager.beginTransaction(); 
transaction.replace(R.id.fragment1_layout_id, newfragment); 
transaction.remove(fragment1); 
transaction.commit(); 

該片段被替換,Fragment示出,而不是Fragment1。儘管只要我一直刷到Fragment4,然後回到newFragmentFragment1已經卷土重來。

回答

0

您的片段由FragmentPagerAdapter提供。

您需要修改FragmentPagerAdapter爲您的Fragment1創建的片段,然後在適配器上調用notifyDataSetChanged()

用你的方法,時間片段1應該再次顯示,ViewPager只會要求你的FragmentPagerAdapter重新創建特定的實例 - 這會讓你回來你想要替換的實例。

只要notifyDataSetChanged()未在適配器上調用,那麼ViewPager就不能在內部緩存片段。因此,如果沒有這個呼叫,它可能不會提升你的機會。

+0

感謝您的答覆正如我使用'FragmentPageAdapter',我必須明確寫'notifyDataSetChanged()'的代碼,我應該在哪裏寫它。 – 2013-02-16 06:00:55