2017-03-23 16 views
-1

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(); 

問題は、私はこのエラーを取得するということですフラグメントに正しくタグ付けしますか?

ありがとうございます!

答えて

0

私が理解していることは、ShoppingListActivityに実装されているViewPagerがタブとともに存在することです。

viewpagerには、各フラグメントにはサーバーの権利が含まれています。今、あなたはShoppingListInfoActivityの権利から戻ったときに、全体のビューページをリフレッシュしたいですか?

ShoppinglistActivityでは以下の変更を行います。

1)ViewPagerAdapter adapter;をグローバルクラスレベルで宣言します。

2)変更private class ViewPagerAdapter extends FragmentPagerAdapter

)(onresumeにFragmentStatePagerAdapter

3)変化に

@Override 
protected void onResume() { 
    super.onResume(); 

    if(adapter!=null){ 
     adapter.notifyDataSetChanged(); 
    } 

} 
+0

おかげであなたをFragmentPagerAdapterを交換してください!正しい答え。 –

関連する問題