ShoppingListActivity
という名前のアクティビティがあります。その中に3つのフラグメントが追加されています。この例では、フラグメントを1つだけ使用します。TAGをAndroidのフラグメントに設定しようとしたときにエラーが発生しました
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
とこのようになりますsetupViewPager(viewPager);
方法:このlookslike
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
Fragment shoppingListFragment = new ShoppingListFragment();
getSupportFragmentManager().beginTransaction().add(shoppingListFragment, "ShoppingListFragmentTag").commit();
adapter.addFragment(shoppingListFragment, "SHOPPING LIST");
viewPager.setAdapter(adapter);
}
マイViewPagerAdapter
クラス:
private class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> fragmentList = new ArrayList<>();
private final List<String> fragmentTitleList = new ArrayList<>();
ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
void addFragment(Fragment fragment, String title) {
fragmentList.add(fragment);
fragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitleList.get(position);
}
}
マイonCreate
方法では、私はこのようになりますViewPager
を宣言しました問題は私がShoppingListActivity
から別のアクティビティに行き、戻ってくるよりも、私のフラグメントがリフレッシュされないということですed。これは私がフラグメントを見つけようとするonResume
方法からの私のコードは切り離し、このようなフラグメントを添付することです:java.lang.IllegalStateException: Can't change tag of fragment ShoppingListFragment{528673f4 #0 ShoppingListFragmentTag}: was ShoppingListFragmentTag now android:switcher:2131558559:0
私が設定することができます方法:
FragmentManager fragmentManager = getSupportFragmentManager();
ShoppingListFragment shoppingListFragment = (ShoppingListFragment) fragmentManager.findFragmentByTag("ShoppingListFragmentTag");
fragmentManager.beginTransaction().detach(shoppingListFragment).attach(shoppingListFragment).commit();
問題は、私はこのエラーを取得するということですフラグメントに正しくタグ付けしますか?
ありがとうございます!
おかげであなたをFragmentPagerAdapterを交換してください!正しい答え。 –