私はViewPagerのフラグメントを置き換えようとしていますが、そのための最善の方法はわかりません。 R.id.root_frame iが置き換えられますフラグメントのコンテナであり、それはでframeLayoutあるViewPagerのフラグメントを置き換える、古いフラグメントが削除されない
Fragment productDetailFragment = RetarFragment.newInstance(null, null);
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.replace(R.id.root_frame, productDetailFragment).commit();
:私はこのコードを使用してフラグメントを変更するために
。
問題は、私がアプリケーションを実行すると、フラグメントは正常に実行されますが、それは削除する必要がある古いフラグメント上にあることです。
もっと良い解決策はありますか?
ViewPagerのアダプタを使用すると、独自のタグでフラグメントを追加するmeed FragmentStatePagerAdapter
public class SectionsPagerAdapter extends FragmentStatePagerAdapter implements Serializable{
public static final int MENU_RETAR = 2;
public static final int MENU_BATALLA = 1;
int MENU_ACTUAL = MENU_BATALLA;
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
switch (position){
case 0: return new TimelineFragment();
case 1: return new SearchFragment();
case 2:
if(MENU_ACTUAL == MENU_RETAR){
return new RetarFragment();
}else{
return new MenuBatallaFragment();
}
case 3: return new NotificacionesFragment();
case 4: return new PerfilFragment().newInstance(this);
default:
return new TimelineFragment();
}
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public int getCount() {
// Show 3 total pages.
return 5;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return null;
case 1:
return null;
case 2:
return null;
case 3:
return null;
case 4:
return null;
}
return null;
}
}
いいえ、しかし...私はフラグメントを削除しますか? –
置き換える前にフラグメントを削除すると、フラグメントが空になります –