【问题标题】:Delay tab fragment creation延迟选项卡片段创建
【发布时间】:2014-03-26 02:49:05
【问题描述】:

我正在实现标签:

public class SectionsPagerAdapter extends FragmentPagerAdapter {


    @Override
    public Fragment getItem(int position) {
        Fragment fragment = null;
        switch (position) {
            case 0: {
                fragment = new Fragment1();
                break;
            }
            case 1: {
                fragment = new Fragment2();
                break;
            }
        }

        return fragment;
    }

    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
        switch (position) {
        case 0:
            return "Fragment1";
        case 1:
            return "Fragment2";
        }
        return null;
    }       
}

活动:

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

    SectionsPagerAdapter mSectionsPagerAdapter;

    /**
     * The {@link ViewPager} that will host the section contents.
     */
    ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

        // Set up the action bar.
        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        // When swiping between different sections, select the corresponding
        // tab. We can also use ActionBar.Tab#select() to do this if we have
        // a reference to the Tab.
        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }
        });

    // For each of the sections in the app, add a tab to the action bar.
    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
        Tab tab = actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(i));
        tab.setTabListener(this);
        actionBar.addTab(tab, i == 0); // Select first tab
    }

我发现每个视图都是预先创建的,即视图是在选择其选项卡之前创建的。有没有办法延迟创建尚未选择的选项卡?

【问题讨论】:

    标签: android tabs android-actionbar


    【解决方案1】:

    如果你只是想延迟标签的创建,试试这个:

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = null;
        switch (position) {
            case 0: {
                // 3000 = SECONDS DELAY
                new CountDownTimer(3000, 1000) {
                    public void onTick(long millisUntilFinished) {}
    
                    public void onFinish() {
                        // INFLATE VIEW HERE
                        fragment = new Fragment1();
                    }
                }.start();
    
                break;
            }
            case 1: {
                // 3000 = SECONDS DELAY
                new CountDownTimer(3000, 1000) {
                    public void onTick(long millisUntilFinished) {}
    
                    public void onFinish() {
                        // INFLATE VIEW HERE
                        fragment = new Fragment2();
                    }
                }.start();
    
                break;
            }
        }
        return fragment;
    }
    

    我不知道这是不是你要找的东西,但我希望它能帮助你:)

    【讨论】:

    • 感谢您的回复!抱歉,我现在意识到我的问题可能令人困惑。我一直在寻找一种方法来延迟片段创建,直到单击选项卡,而不是基于时间。 IE 如果我有 5 个选项卡,我可以节省初始加载时间,因为我最初只创建第一个选项卡,因为这是唯一显示的选项卡。
    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多