2016-07-17 17 views
-1

In meiner Haupttätigkeit erzeuge ich Tablayout und Pager, dann wenn ich zu Tab B (Tab A zu Tab B) wechsle und in Tab B ein weiteres Tablayout und Viewpager erstelle Der Inhalt wird jedoch leer, nur der Tabname wird angezeigt. Bitte führen Sie mich dieses Problem. Dies ist mein Code in Tab B:Tab layout und view pager im tab layout und viewpager

public class TabB extends BaseFragment { 

private TabLayout tabLayout; 
private ViewPager viewPager; 

@Override 
public int getLayoutResourceId() { 
    return R.layout.fragmentB; 
} 

@Override 
public void initView(View view) { 
    viewPager = (ViewPager) view.findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 
    tabLayout = (TabLayout) view.findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 

private void setupViewPager(ViewPager viewPager) { 
    ViewChildPagerAdapter adapter = new ViewChildPagerAdapter(getChildFragmentManager()); 
    adapter.addFragment(new TabC, "tab c"); 
    adapter.addFragment(new TabD, "tab d"); 
    viewPager.setAdapter(adapter); 
} 

public static class ViewChildPagerAdapter extends FragmentStatePagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mTitle = new ArrayList<>(); 

    public ViewChildPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mTitle.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mTitle.get(position); 
    } 


} 

}

+0

Ihre Registerkarten sollten keine anderen Registerkarten enthalten - es ist eine schlechte Übung. Sie können keine verschachtelten Tabs haben. Stellen Sie sich vor, Sie wischen nach links, um die Registerkarte zu wechseln: Welche Registerkarte würden Sie ändern, die innere oder die äußere? Ich würde Ihnen raten, Ihre Navigation UI zu überdenken. –

+0

Scheint wie ein armes Design ... Wenn Sie horizontal wischen, welcher ViewPager sollte sich bewegen? –

+0

Ja, ich weiß das, aber ich muss es basierend auf der Anforderung des Kunden folgen. Sie haben Tab-Layout auf der Unterseite und dann wollen sie eine andere Registerkarte oben bei Fragment B. –

Antwort

-2

ich nicht Ihr Punkt sieht eine neue tablayout in einem separaten Fragmente zu schaffen. Warum erstellen Sie die TabLayouts nicht auf der Aktivität selbst? Dann müssen Sie nur einmal setupWithViewPager() anrufen.

Verwandte Themen