1

我的Activity中有一個TabLayout,它在創建時顯示一個片段,但是我需要能夠在完成一個操作後添加一個新片段(或者在活動已創建,但只顯示第一個,然後顯示第二個)。在運行時向TabLayout添加片段

我已經嘗試將片段添加到viewPagerAdapter,然後調用notifyDataSetChanged()方法,它添加的frament,但它的標題不顯示在tabLayout中,如果我嘗試滑動到它,我得到一個IndexOutOfBoundsException: Invalid index 1, size is 1

有沒有人得到一些建議給我?

我的活動,在這裏我想補充的第一fragmen:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.act_one); 

    // Crete a new fragment 
    FragmentOne fragmentOne = new FragmentoOne(); 

    tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    viewPager = (ViewPager) findViewById(R.id.viewPager); 

    // Creates the viewPagerAdapter 
    viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 

    // Adds the fragment to ViewPagerAdapter 
    viewPagerAdapter.addFragment(fragmentoOne, "First"); 
    viewPager.setAdapter(viewPagerAdapter); 
    tabLayout.setupWithViewPager(viewPager); 

} 

這裏是我嘗試添加新的片段:

public void onAddFragment2() { 

    viewPagerAdapter.addFragment(new FragmentoTwo(), "Second"); 
    viewPagerAdapter.notifyDataSetChanged(); 

} 
+0

你有沒有使用setAdapter設置適配器? –

+0

Dude ...我必須承認我沒有,我在想它會再次重新創建第一個片段,丟失了一些'EditText'中填充的數據,現在就試用它,像魅力一樣工作......謝謝! :) – Rafael

回答

0

重新設置適配器您setAdapter

0

如果你正在試圖建立一個tabLayout更多比一個標籤,即這樣的事情:

enter image description here

您可以使用FragmentsViewPager創建。但是,在單個問題中從頭開始實施它將是多餘的!

完美的解決方案是遵循this tutorial,它確實爲我工作,如果有任何問題,你應該選擇要求評論!

希望它有幫助!

0

這一點很重要,如果你有你喊3片段在適配器中寫3加了上去。

@Override 
public int getCount() { 
    return 3; 
}