【问题标题】:ViewPager's Fragments disappearViewPager 的片段消失了
【发布时间】:2013-08-28 08:46:31
【问题描述】:

我将DrawerLayoutViewPagerIndicator 一起使用,但最后一个无法与DrawerLayout 一起正常工作。打开应用程序后,viewpager 会正确显示,但是一旦我更改 DrawerLayout 中的片段,ViewPager 的片段就会消失。

这是我的 FragmentManager:

FragmentManager fragmentManager = getSupportFragmentManager();
switch (arg2) {
    case 0:
        contentFragment = new Lebanon();
        break;
} 
fragmentManager.beginTransaction()
        .replace(R.id.content_frame, contentFragment).commit();

ViewPager 中的第二个片段和第四个片段在那里并且它们没有消失,而第一个、第三个和第五个片段消失了。我的代码有什么问题?

这是我的片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    viewta = inflater.inflate(R.layout.simple_tabs, container, false);
    SamsungLB = com.androidarabia.lebanon.SamsungLB.newInstance();
    HTCLB = com.androidarabia.lebanon.HTCLB.newInstance();
    LGLB = com.androidarabia.lebanon.LGLB.newInstance();
    SonyLB = com.androidarabia.lebanon.SonyLB.newInstance();
    SearchLB = com.androidarabia.lebanon.SearchLB.newInstance();
    this.getSherlockActivity().getSupportActionBar()
            .setHomeButtonEnabled(true);
    prefs = this.getSherlockActivity().getSharedPreferences(prefName,
            Context.MODE_PRIVATE);
    adapter = new GoogleMusicAdapter(this.getSherlockActivity()
            .getSupportFragmentManager());
    pager = (ViewPager) viewta.findViewById(R.id.pager);

    pager.setPageTransformer(true, new ZoomOutPageTransformer());
    indicator = (TabPageIndicator) viewta.findViewById(R.id.indicator);
    pager.setCurrentItem(0);
    pager.setAdapter(adapter);
    pager.setOffscreenPageLimit(4);
    indicator.setViewPager(pager);
    return viewta;
}

private void addtabs(ViewPager pager2) {
    // TODO Auto-generated method stub
    pager2.setAdapter(adapter);
    pager2.setOffscreenPageLimit(4);
    indicator.setViewPager(pager);
}

class GoogleMusicAdapter extends FragmentStatePagerAdapter {

    public GoogleMusicAdapter(FragmentManager fm) {
        super(fm);
        notifyDataSetChanged();
    }

    @Override
    public Fragment getItem(int position) {

        switch (position) {
        case 0:
            return SamsungLB;
        case 1:
            return HTCLB;
        case 2:
            return LGLB;
        case 3:
            return SonyLB;
        case 4:
            return SearchLB;

        }
        notifyDataSetChanged();

        return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
    }

    @Override
    public CharSequence getPageTitle(int position) {

        return CONTENT[position % CONTENT.length].toUpperCase();
    }

    @Override
    public int getCount() {

        return CONTENT.length;
    }

}

【问题讨论】:

    标签: android android-viewpager navigation-drawer android-nested-fragment


    【解决方案1】:

    getChildFragmentManager()GoogleMusicAdapter 一起使用:

    adapter = new GoogleMusicAdapter(getChildFragmentManager());
    

    因为ViewPager使用的片段是嵌套片段。

    【讨论】:

    • @KingOmar 确保您的项目中有最新版本的支持库。
    • 是的,我用谷歌搜索了一下。我有最新版本的支持库。
    • @KingOmar 我怀疑你有最新版本。您在FragmentonCreateView() 回调中创建适配器,以便该方法应该可用。就像测试更新 sdk 并再次复制 jar 一样。
    • 我发现该方法在扩展Fragment而不是SherlockFragment时可用
    • @KingOmar A SherlockFragment 扩展 Fragment 所以该方法也可以在 SherlockFragment 中使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多