首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的SlidingTabLayout会重新启动我的活动?

为什么我的SlidingTabLayout会重新启动我的活动?
EN

Stack Overflow用户
提问于 2016-02-08 19:19:07
回答 1查看 55关注 0票数 0

我有4个选项卡,如下所示,当我单击from Tags to Home it restarts the Home activity时。为什么会这样呢?

另外,我的slidingtabLayout有点不稳定,这和home activity重启有什么关系吗?

代码语言:javascript
复制
   public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        //2 steps creating a fragment, create the fragment class and create the UI for it
        Fragment fragment = null;
        //we dont want it to return our place holder Fragment instead we want to switch bewtween 3
        //create a switch case based on the position applied or the fragment selected
        switch (position) {
            case HOME:
                fragment = Dashboard.newInstance("","");
                break;
            case TAGS:
                fragment = Tags.newInstance("","");
                break;
            case MY_RECENT:
                fragment = MyPosts.newInstance("","");
                break;
            case TOP;
                fragment = Top.newInstance("", "");
                break;
        }
        return fragment;
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return 4;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return "Home";
            case 1:
                return "Top";
            case 2:
                return "Recent";
            case 3:
                return "Tags";
        }
        return null;
    }
}

}
EN

回答 1

Stack Overflow用户

发布于 2016-02-08 19:34:56

这是因为每次用户更改选项卡时,都会创建每个片段的新实例。另外,我认为你应该扩展FragmentPagerAdapter而不是FragmentStatePagerAdapter

如果您在SectionsPagerAdapter构造函数中创建片段,则将对它们的引用保留为成员变量,然后在getItem()方法中返回对片段的引用,它应该会停止重新创建片段。

也许可以试试这样的东西:

代码语言:javascript
复制
public class SectionsPagerAdapter extends FragmentPagerAdapter {

Fragment mDashboardFragment;
Fragment mTagsFragment;
Fragment mMyRecentFragment;
Fragment mTopFragment;

public SectionsPagerAdapter(FragmentManager fm) {
    super(fm);
    mHomeFragment = Dashboard.newInstance("",""); 
    mTagsFragment = Tags.newInstance("",""); 
    mMyRecentFragment= MyPosts.newInstance("",""); 
    mTopFragment = Top.newInstance("", "");

}

@Override
public Fragment getItem(int position) {

    Fragment fragment = null;

    //create a switch case based on the position applied or the fragment selected
    switch (position) {
        case HOME:
            fragment = mDashboardFragment;
            break;
        case TAGS:
            fragment = mTagsFragment;
            break;
        case MY_RECENT:
            fragment = mMyRecentFragment;
            break;
        case TOP;
            fragment = mTopFragment;
            break;
    }
    return fragment;
}

@Override
public int getCount() {
    // Show 3 total pages.
    return 4;
}

@Override
public CharSequence getPageTitle(int position) {
    switch (position) {
        case 0:
            return "Home";
        case 1:
            return "Top";
        case 2:
            return "Recent";
        case 3:
            return "Tags";
    }
    return null;
}}}

请记住,这可能是非常低效的,因为可能会创建不必要的碎片。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35268387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档