2015-07-31 5 views
1

Итак, я пытаюсь иметь экран с тремя фрагментами на разных вкладках, и на одном из них они переключаются на другой фрагмент, но я не могу понять, как я мог это сделать. Я посмотрел на другие подобные вопросы, однако, я не могу заставить их работать. Поэтому, если кто-то может помочь мне точно понять, что было бы здорово.Android: Замена фрагментов внутри вкладок

Мой tabsadapter это

public class Tabsadapter extends FragmentStatePagerAdapter { 

    private int TOTAL_TABS = 3; 

    public Tabsadapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int index) { 
     switch (index) { 
      case 0: 
       return new fragment1(); 

      case 1: 
       return new fragment2(); 

      case 2: 
       return new fragment3(); 

     return null; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
    return TOTAL_TABS; 
    } 

} 

и мое главное заключается в следующем:

public class main extends ActionBarActivity implements android.support.v7.app.ActionBar.TabListener { 

    private ViewPager tabsviewPager; 
    private ActionBar mActionBar; 
    private Tabsadapter mTabsAdapter; 

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

     tabsviewPager = (ViewPager) findViewById(R.id.tabspager); 

     mTabsAdapter = new Tabsadapter(getSupportFragmentManager()); 

     tabsviewPager.setAdapter(mTabsAdapter); 

     getSupportActionBar().setHomeButtonEnabled(false); 
      getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     Tab tab1 = getSupportActionBar().newTab().setText("Month").setTabListener(this); 
     Tab tab2 = getSupportActionBar().newTab().setText("Week").setTabListener(this); 
     Tab tab3 = getSupportActionBar().newTab().setText("Day").setTabListener(this); 

     getSupportActionBar().addTab(tab2); 
     getSupportActionBar().addTab(tab2); 
     getSupportActionBar().addTab(tab3); 

     tabsviewPager.setOnPageChangeListener(new OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int position) { 
       // TODO Auto-generated method stub 
       getSupportActionBar().setSelectedNavigationItem(position); 
      } 

      @Override 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
      } 

      @Override 
      public void onPageScrollStateChanged(int arg0) { 
      } 
     }); 
    } 

    @Override 
    public void onTabReselected(Tab arg0, FragmentTransaction arg1) { 
    } 

    @Override 
    public void onTabSelected(Tab selectedtab, FragmentTransaction arg1) { 
     tabsviewPager.setCurrentItem(selectedtab.getPosition()); //update tab position on tap 
    } 

    @Override 
    public void onTabUnselected(Tab arg0, FragmentTransaction arg1) { 
    } 
} 

Любой кто поможет может обеспечить было бы весьма признателен. Благодаря!

ответ

2

На Android Studio, вы можете автоматически создать код для этого:

  • правой кнопкой мыши на папке вашего проекта, выберите New -> Вкладки активность.
  • Выберите стиль навигации. (ActionBarTabs если я вас понял, хорошо)
  • Изменить другие поля при необходимости
  • Нажмите отделку

Теперь у вас есть совершенно новые вкладки активности использовать :)

Вы можете прочитать сгенерированный код, если вы хотите понять, как это работает.

Пожалуйста, спросите меня, нужна ли вам помощь.

+0

Спасибо! Не знал об этой функции, этот код намного лучше. Но как я могу заменить фрагмент, поэтому пока я нахожусь в приложении и нажимаю кнопку, фрагмент заменит себя другим? – HaHaHAHungry

+0

Я действительно не понимаю, что вы пытаетесь сделать. Вы можете объяснить мне, пожалуйста? – victorleduc

+0

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