0

Ich bin neu in Android-Entwicklung. Ich habe eine ViewPager, die TabLayout enthält (das hat feste Anzahl von Registerkarten). Die ViewPager hat SectionPagerAdapter (das hat ein Fragment, das Tabs entspricht).Android: Aktualisierung Tab-Inhalt

Jetzt möchte ich den Inhalt der Registerkarte aktualisieren, wenn der Benutzer die Registerkarte auswählt und sichtbar wird (oder wenn der Benutzer den Inhalt aktualisieren möchte).

Aber ich bin mir nicht sicher, welcher ist der richtige Weg, ich kann das tun.

Bisher bisher fand ich zwei Lösungen:

1) In Zuhörer TabLayout:

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() 
{ 
    @Override 
    public void onTabSelected(TabLayout.Tab tab) 
    { 
     mViewPager.setCurrentItem(tab.getPosition()); 
     // Update tab containts here 
    } 

    @Override 
    public void onTabUnselected(TabLayout.Tab tab) 
    { 

    } 

    @Override 
    public void onTabReselected(TabLayout.Tab tab) 
    { 

    } 
}); 

2) Verwenden Sie ViewPager.OnPageChangeListener auf Rückrufe für, wenn ein Seitenfragment zu erhalten (innen Tab) wird sichtbar:

viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() 
{ 
    @Override 
    public void onPageSelected(int position) 
    { 
     // Update tab containts here 
    } 
}); 

Kann s Omeone Experte in diesem bitte beraten Sie mich?

Antwort

0

Die Funktionsweise eines Viewpager-Adapters (mit Tabs) besteht darin, dass Sie nach dem Hinzufügen Ihrer Fragmente zum viewpager im Grunde Inhalt zu Ihren Fragmenten hinzufügen müssen und der Adapter verwalten kann, welches Fragment sichtbar ist, wenn eine bestimmte Registerkarte ausgewählt wird .

Also, indem Sie einfach: OnTabSelectedListener Schnittstelle auf Ihrem tabLayout, alles, was Sie tun müssen, ist `setCurrentItem (tab.getPosition()); auf Ihrer ViewPager Referenz (von Ihrem Layout).

Sie können ein Verfahren wie dieses Fragment zu Ihrem viewPagerAdapter hinzuzufügen:

private void setupViewPager(ViewPager viewPager){ 
    //then create an instance of your ViewPagerAdapter class here 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 

    //then add fragments for each TAB here 
    //by calling a method inside your Adapter like this 
    adapter.addFrag(new FragmentOne(), "TITLE HERE"); 
    adapter.addFrag(new FragmentTwo(), "TITLE TWO"); 

    //Now set your adapter here 
    viewPager.setAdapter(adapter); 
} 

Jetzt in Ihrem Fragmente, Sie entsprechend unterschiedliche Inhalte zeigen können.

Ich hoffe, das hilft!

+0

Also, um zu bekommen, welche Registerkarte ausgewählt ist, verwende 'onTabSelected'. Danke für die Antwort. Ehrlich gesagt, bin ich immer noch nicht sehr klar über Beziehungen zwischen tablayout viewpager Fragment und Adapter. Wenn Sie einen Link zu einem Dokument teilen können, das alles mit Diagramm und Beispiel beschreibt, wäre das großartig. – Atul

Verwandte Themen