0

In meinem StartActivity der BottomNavigationBar Listener hat die folgende Einstellung:Android - Page-View in neuen BottomNavigationBar - verhindert Reload-Fragment

private GuideFragment guideFragment = new GuideFragment(); 
private MapFragment mapFragment = new MapFragment(); 
private MoreFragment moreFragment = new MoreFragment(); 

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

    @Override 
    public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
     Fragment selectedFragment = null; 
     switch (item.getItemId()) { 
      case R.id.navigation_guide: 
       selectedFragment = guideFragment; 
       break; 
      case R.id.navigation_map: 
       selectedFragment = mapFragment; 
       break; 
      case R.id.navigation_more: 
       selectedFragment = moreFragment; 
       break; 
     } 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     transaction.replace(R.id.content, selectedFragment); 
     transaction.commit(); 
     return true; 
    } 

}; 

Wie ich bereits erwähnte ich, dass die ausgewählten Fragmente immer verhindern wollen laden die Quellen/view. Ich habe versucht, ein paar Sachen aus wie - in den Fragmenten:

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

Aber die Fragmente noch die Ansicht und die Last (in meinem Fall) neu webresources neu.

las ich etwas, das ein Page-View, vor allem sollte die Magie tun

offScreenPageLimit 

helfen könnte.

Meine Hauptfrage ist, wo soll ich einen PageViewer implementieren - Ist das in meiner StartActivity möglich? Oder kann ich das Problem auf andere Weise lösen?

+0

Sind Ihre Fragmente Inhalte direkt oder tangential verwandt? Das heißt, kann der Inhalt jedes Fragments existieren und ohne die anderen Sinn ergeben? Wenn nicht, würde es vielleicht besser sein, eine Tabbed-Navigation mit einem 'ViewPager' zu schalten. – CzarMatt

+0

Alle drei Fragmente befinden sich in einer anderen Ansicht/Registerkarte. Ist Pager dann eine eigene Klasse oder kann ich sie in meine Aktivität einfügen? –

+0

Oder dass ich es richtig verstehe - Muss ich die BottomNavigation entfernen und durch einen ViewPager ersetzen? –

Antwort

0

Ich habe es Jungs! Es ist kein PageViewer erforderlich.

Hier ist meine Lösung (alle codiert in StartActivity nicht in Fragmente):

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; 
    } 

}; 

und in onCreate Liste der Transaktion verpflichtet. fm.beginTransaction().add(R.id.content,moreFragment).commit(); fm.beginTransaction().add(R.id.content, mapFragment).commit(); fm.beginTransaction().add(R.id.content, guideFragment).commit();

Es ist sehr wichtig, die ersten Tabs Fragment zuletzt (fragm3, fragm2, fragm1) zu begehen, wenn Sie 3 Registerkarten haben.

Hochgeschwindigkeitsleistung auf dem Smartphone jetzt, indem nicht jedes Fragment neu geladen/aktualisiert wird.

Verwandte Themen