2015-06-20 41 views
4

我試着Android的新TabLayout類添加兩個選項卡正下方我的ActionBar。每個選項卡將承載不同的片段。Android TabLayout(API 22)將片段添加到每個選項卡沒有ViewPager

此外,我不希望能夠在兩個標籤之間滑動 - 要在我的標籤之間導航,我希望只能觸摸我要導航到的標籤。

在我的MainActivity,我有:

public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    tabLayout.addTab(tabLayout.newTab().setText("Newsfeed")); 
    tabLayout.addTab(tabLayout.newTab().setText("Random")); 

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      // IDEALLY HERE, I'd like to do something like 
      // tab.setFragment(new MainFragment()). 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 
} 

所以我想重寫我的onTabSelected和onTabReselected方法,使這兩個選項卡之間切換導致顯示二種不同的片段。我無法在網上找到有關獨立於ViewPager的新TabLayout。

ANy clues?謝謝!

回答

7
@Override 
public void onTabSelected(TabLayout.Tab tab) { 
    Fragment f=heyWhatFragmentGoesInThisTab(tab); 

    getFragmentManager() 
    .beginTransaction().replace(R.id.where_the_tab_contents_go, f).commit(); 
} 

,你需要寫:

  • heyWhatFragmentGoesInThisTab()返回應根據所選擇的選項卡中顯示的Fragment

  • R.id.where_the_tab_contents_go,這是一個FrameLayout充當活性片段容器

IOW,您響應TabLayout更改片段,就像更改片段以響應操作欄項目單擊,導航抽屜項目單擊或任何其他GUI事件一樣。

+0

這不會讓用戶在片段之間滑動,因爲沒有ViewPager,如何添加滑動操作並同時使用沒有ViewPager的片段 –

+0

@OmarHossam:我不知道。 – CommonsWare

相關問題