0

BottomNavigationBarリスナーは次のセットアップを持っているのを防ぎます。 私はのようないくつかのものを試してみた - 断片的に:アンドロイド - - 新しいBottomNavigationBarのページビュー数は、リロード断片私のStartActivityで

if (rootView == null) 
    inflater.inflate... 

しかし、断片はまだ(私の場合)ビューと負荷を再作成新しいwebresources。

私は、ページビューが助けることができる何か、特に

offScreenPageLimit 

は魔法を行う必要があります読んで。

私の主な質問は、私はPageViewerを実装する必要があります - 私のStartActivityでは可能ですか? 他の方法で問題を解決することはできますか?

+0

フラグメントの内容は、直接的または接線的に関連していますか?つまり、各断片の内容が存在し、他の部分がなければ意味をなすことができますか?そうでなければ、おそらく、 'ViewPager'を使ってタブ付きナビゲーションを切り替えることは、あなたの必要条件に適しています。 – CzarMatt

+0

3つのフラグメントはすべて異なるビュー/タブにあります。 View Pagerは自分のクラスですか、それとも自分のアクティビティに追加できますか? –

+0

または正しく理解している - BottomNavigationを削除してViewPagerに置き換える必要がありますか? –

答えて

0

私はそれを男の子だった! PageViewerは必要ありません。ここで

私の解決策は、(すべてではないフラグメントでStartActivityでコード化された)である:

private final GuideFragment guideFragment = new GuideFragment(); 
private final MapFragment mapFragment = new MapFragment(); 
private final MoreFragment moreFragment = new MoreFragment(); 
private final android.app.FragmentManager fm = getFragmentManager(); 
Fragment active = guideFragment; 

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener 
     = new BottomNavigationView.OnNavigationItemSelectedListener() { 

    @Override 
    public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.navigation_guide: 
       if(active != guideFragment) { 
        fm.beginTransaction().show(guideFragment).commit(); 
       } 
       else { 
        fm.beginTransaction().hide(active).show(guideFragment).commit(); 
       } 
       active = guideFragment; 
       break; 
      case R.id.navigation_map: 
       fm.beginTransaction().hide(active).show(mapFragment).commit(); 
       active = mapFragment; 
       break; 
      case R.id.navigation_more: 
       fm.beginTransaction().hide(active).show(moreFragment).commit(); 
       active = moreFragment; 
       break; 
     } 

     return true; 
    } 

}; 

とのonCreateリスト内のトランザクションをコミットします。 fm.beginTransaction().add(R.id.content,moreFragment).commit(); fm.beginTransaction().add(R.id.content, mapFragment).commit(); fm.beginTransaction().add(R.id.content, guideFragment).commit();

3つのタブがある場合、最初のタブフラグメントを最後にコミットすることが重要です(fragm3、fragm2、fragm1)。

スマートフォンでは、すべてのフラグメントを新規に読み込むことなく、高速でパフォーマンスを向上させることができます。

関連する問題