2015-04-21 2 views
0

Я хочу создать активность, которая может отображать любое количество вкладок, без создания активности для каждой вкладки.
Возможно ли это?
Единственный способ, которым я видел создание вкладок, включал создание активности для каждого из них.Использование неизвестного количества вкладок

+0

это возможно, вам просто нужно определить необходимое количество вкладок во время выполнения и снова и снова заменить один и тот же фрагмент –

+0

Я не уверен, как это сделать. Я давно не программировал в андроиде. у вас есть пример? спасибо – fofo

ответ

0

Вы можете попробовать следующее,

  1. Расширьте свою деятельность с ActionBarActivity и добавить необходимое количество вкладок программно,

    ActionBar.TabListener tabListener; 
    mactionBar = getActionBar(); 
    mactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    
    tabListener=new ActionBar.TabListener() { 
        @Override 
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
         displayTabs(tab.getPosition()); 
        } 
    
        @Override 
        public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
    
        } 
    
        @Override 
        public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
         displayTabs(tab.getPosition()); 
        } 
    }; 
    
    mactionBar.addTab(mactionBar.newTab().setText(<any text>).setTabListener(tabListener)); 
    //call the same method for required number of tabs 
    
  2. вызова тот же фрагмент для каждой вкладки нажмите

    private void displayTabs(int position) 
    { 
    Fragment fragment = null; 
    switch (position) { 
    case 0: 
        fragment = new YourFragment(); 
        break; 
    case 1: 
        fragment = new YourFragment(); 
        break; 
    
    // same for required numder of cases 
    
    
    default: 
        break; 
    } 
    
    if (fragment != null) 
    { 
        FragmentManager fragmentManager = getSupportFragmentManager(); 
        fragmentManager.beginTransaction().replace(<container id>, fragment).commit(); 
    } 
    } 
    
Смежные вопросы