簡體   English   中英

為什么我的SlidingTabLayout重新啟動我的活動?

[英]Why does my SlidingTabLayout Restart my activity?

我有4個標簽,如下所示,當我從“ Tags單擊“ Home它將重新啟動“ Home activity 這是為什么??

此外,我的slidingtabLayout有點slidingtabLayout ,這與home activity重啟有關嗎?

   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;
    }
}

}

這是因為您每次用戶更改選項卡時都在創建每個片段的新實例。 另外,我認為您應該擴展FragmentPagerAdapter而不是FragmentStatePagerAdapter

如果在SectionsPagerAdapter構造函數中創建Fragments,則保留對它們的引用作為成員變量,然后在getItem()方法中返回對片段的引用,它將停止重新創建片段。

也許嘗試這樣的事情:

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;
}}}

請記住,這可能效率很低,因為可能不必要地創建碎片。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM