2017-05-07 2 views
0

Ich bin Kupplung BottomNavigationView mit ViewPager, es funktioniert ok, der Hauptgrund dafür ist das Wischen und Animation.Öffnen eines nicht aufgelisteten Fragments in einer Viewpager-Navigation?

Es gibt 3 Möglichkeiten auf meine Zuhörer:

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

    @Override 
    public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.navigation_home: 
       viewPager.setCurrentItem(0); 
       return true; 
      case R.id.navigation_solicitation: 
       viewPager.setCurrentItem(1); 
       return true; 
      case R.id.navigation_my_profile: 
       viewPager.setCurrentItem(2); 
       return true; 
     } 
     return false; 
    } 

}; 

Es gibt jedoch andere, nicht börsennotierte Fragmente. Wie kann ich Fragmente auf dem Pager aufblasen und sie entfernen lassen, sobald die Übertragung oder etwas anderes ausgewählt wurde?

+0

Es scheint, dass ich nach verschachtelten Fragmenten suche. Ich bin nicht sicher, wie es weitergeht. – Rosenberg

+0

Frage ist unklar. Was ist das Problem beim Platzieren dieses Fragments in "ViewPager"'s Adapter? – azizbekian

+0

Ich möchte es nicht Teil der Navigation machen, da es nicht ist. – Rosenberg

Antwort

0

Lösung

hat dieses Bild unter dem viewpager im Haupt Layout-Datei:

<FrameLayout 
    android:id="@+id/content" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1"> 
</FrameLayout> 

Unten ist die Methode verwendet, um das neue Fragment zu öffnen und machen viewpager gegangen:

 viewPager.setVisibility(viewPager.GONE); 
     fragment = new PostSolicitationFragment(); 
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     ft.setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_down); 
     ft.replace(R.id.content, fragment); 
     ft.commit(); 

Und Dies ist das neue onNavigationSelectedItems, damit es erneut angezeigt wird, wenn der Benutzer auf einen Menüeintrag klickt.

@Override 
    public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.navigation_home: 
       viewPager.setVisibility(VISIBLE); 
       viewPager.setCurrentItem(0); 
       return true; 
      case R.id.navigation_solicitation: 
       viewPager.setVisibility(VISIBLE); 
       viewPager.setCurrentItem(1); 
       return true; 
      case R.id.navigation_my_profile: 
       viewPager.setVisibility(VISIBLE); 
       viewPager.setCurrentItem(2); 
       return true; 
     } 
     return false; 
    } 
Verwandte Themen