0

fest Ich habe ein Fragment mit einem ViewPager (fragment_main) in meinem MainActivity. Auf meiner MainActivity habe ich eine BottomNavigationView. Ich möchte die fragment_main 's ViewPager' Seite einstellen, wenn ich auf die Elemente von BottomNavigationView klicke. Wie kann ich das tun?Legen Sie die ViewPager-Seite des Kindfragments von Aktivität

PS: Ich habe es schon funktionieren, aber ich glaube nicht, dass ich eine gute way.I bekam setzen einen refrence meiner ViewPager in meinem Fragment verwendet und ich den Artikel:

bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
      MainFragment mainFragment = null; 
      switch (item.getItemId()){ 
       case R.id.nav_item_feed: 
        mainFragment =(MainFragment)getSupportFragmentManager().findFragmentById(R.id.main_frame); 
        mainFragment.viewPager.setCurrentItem(0); 
        break; 
      } 
     } 

Es funktioniert! Aber das Problem ist: Was ist, wenn ich ein anderes Fragment auf meinem MainActivity habe? Sicher, ich kann es zuerst mit fragment_main ersetzen, aber es braucht Zeit und mainFragment =(MainFragment)getSupportFragmentManager().findFragmentById(R.id.main_frame) gibt null zurück.

Also, was ist der beste Weg, Fragments Viewpager-Seite, Inside Elternaktivität zu setzen?

Antwort

0

Verwenden FrameLayout statt ViewPager für Fragmente

Verwendung unter der Linie in Ihrem Fall Anweisung innerhalb bottomNavigationView Zuhörer klicken.

toFrag(ProductsFrag.newInstance(FragInstance.PRODUCTS)); 

    public void toFrag(Fragment toFrag){ 
    new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          getSupportFragmentManager().beginTransaction().replace(R.id.content, toFrag).commitAllowingStateLoss(); 
         } 
        }, 200); 
} 

hier R.id.conent ist FrameLayout id

+0

Könnten Sie den Code mehr erklären bitte? – Apptic

Verwandte Themen