2016-07-17 67 views
-1

在我的主要活动,我创建tablayout和查看寻呼机,然后当我切换到标签B(标签A到标签B)和标签B内,我创建另一个标签布局和viewpager但内容变空,只显示标签名称。请指导我这个问题。这是我在标签B码:标签布局和查看寻呼机内部标签布局和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

你的标签里面不应该有其他标签 - 这是不好的做法。你不能有嵌套的标签。想象一下你向左滑动来改变标签:你会改变哪个标签,内部标签还是外部标签?我会建议你重新考虑你的导航界面。 –

+0

看起来像一个糟糕的设计......如果你水平滑动,哪个ViewPager应该移动? –

+0

是的,我知道,但我必须根据客户的要求遵循它。他们有底部的标签布局,然后他们希望另一个标签顶部的B片段。 –

回答

-2

我不明白你的意思创建一个单独的片段中新tablayout。为什么不在活动本身上创建TabLayouts?那么你只需拨打setupWithViewPager()一次。