2013-11-13 4 views
1

Im с помощью FragmentPagerAdapter для управления 3 фрагментами.FragmentTransaction с FragmentPagerAdapter

public class SectionsPagerAdapter extends FragmentPagerAdapter { 

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

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
    } 

    @Override 
    public Fragment getItem(int position) { 
     // getItem is called to instantiate the fragment for the given page. 
     Fragment fragment = new Fragment(); 
     switch (position) { 
      case 0: 
       return fragment = new Latest(); 
      case 1: 
       return fragment = new MySets(); 
      case 2: 
       return fragment = new MyPictures(); 
      default: 
       break; 
     } 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     // Show 3 total pages. 
     return 3; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     //SET TITLE OF TABS 
     Locale l = Locale.getDefault(); 
     switch (position) { 
      case 0: 
       return getString(R.string.title_section1_latest).toUpperCase(l); 
      case 1: 
       return getString(R.string.title_section2_mysets).toUpperCase(l); 
      case 2: 
       return getString(R.string.title_section3_allpictures).toUpperCase(l); 
     } 
     return null; 
    } 
} 

Все фрагменты простираются на фрагмент. Для обработки событий Click и пользовательского макета Im с помощью адаптера, который расширяет BaseAdapter. Моя цель - заменить фрагмент 2 на другой фрагмент. Правильно ли, что я должен добавить все фрагменты с помощью FragmentTransaction, чтобы заменить их позже?

Но как я могу динамически добавлять фрагменты для использования FragmentTransaction? Есть ли способ добавить их в getItem (int position) или это неправильный путь?

ответ

0

Редактировать

Если вам нужен фрагмент, как только приложение запускается, то подход использованный выше в GetItem() в порядке, вам не нужно делать операцию там.

Если вы хотите позже заменить фрагмент, просто используйте getSupportFragmentManger и транзакцию во Фрагменте.

  NewFragment newFrag = new NewFragment(); 
    FragmentTransaction transaction = getActivity() 
      .getSupportFragmentManager().beginTransaction(); 
    transaction.replace(R.id.your_fragment_container_id, newFrag); 
    transaction.addToBackStack(null); 
    transaction.commit(); 
+0

Но где и как я могу добавить фрагмент «когда мне это нужно»? В SectionPagerAdapter или в классе Fragment? – amaroqz

+0

Если вам нужен фрагмент, как только приложение будет запущено, вы можете добавить его в SectionPagerAdapter. Если у вас уже есть фрагмент, и вы хотите его заменить, добавьте его в класс фрагментов. – AndroidEnthusiast

+0

Мне нужно Фрагменты, как только приложение будет запущено. Но я не знаю, как добавить фрагменты через FragmentTransaction в SectionPagerAdapter ... – amaroqz

Смежные вопросы