次のようになります。this example ViewPagerの1つのタブ内で別のフラグメントに置き換えようとしています。私はこの例外を取得しています:この例外は、繰り返し同じフラグメントを追加する、またはフラグメントの数をミスカウント取得することによって引き起こされているように見えるが、私はこれらの場所のいずれかを見ることができない他の記事によると java.lang.IllegalStateException: Can't change tag of fragment DailyWordFragment
ViewPagerのフラグメントを置き換えるとIllegalStateExceptionが発生する
class ViewPagerAdapter extends FragmentPagerAdapter {
private final FragmentManager fragmentManager;
Fragment fragment;
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
fragmentManager = manager;
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
if(fragment == null){
fragment = DailyWordFragment.newInstance();
}
return fragment;
case 1:
if(fragment == null){
fragment = WordListFragment.newInstance(new WordListFragment.OnWordItemAddListener() {
@Override
public void onWordItemAddListener() {
fragmentManager.beginTransaction().remove(fragment).commit();
fragment = AddWordFragment.newInstance();
notifyDataSetChanged();
}
});
}
return fragment;
default:
return null;
}
}
@Override
public int getItemPosition(Object object) {
if(object instanceof WordListFragment && fragment instanceof AddWordFragment)
return POSITION_NONE;
return POSITION_UNCHANGED;
}
@Override
public int getCount() {
return 2;
}
}
まったく存在していますか?明らかに私は何かが欠けている。助けていただければ幸いです。ありがとうございました。
なぜビューポート内のフラグメントマネージャで作業していますか? getitemでは、フラグメントのインスタンスを返すだけです。 ViewPagerはフラグメントインスタンスのライフサイクルを管理します。 – Juan
私は1つのタブ内でフラグメントスワップを実行しようとしているためです。 – Brian