Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 延迟选项卡片段创建_Android_Tabs_Android Actionbar - Fatal编程技术网

Android 延迟选项卡片段创建

Android 延迟选项卡片段创建,android,tabs,android-actionbar,Android,Tabs,Android Actionbar,我正在执行以下选项卡: public class SectionsPagerAdapter extends FragmentPagerAdapter { @Override public Fragment getItem(int position) { Fragment fragment = null; switch (position) { case 0: { fragment = ne

我正在执行以下选项卡:

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
    }
public类MainActivity扩展FragmentActivity实现ActionBar.TabListener{
分段SPAGERADAPTER mSectionsPagerAdapter;
/**
*将承载节内容的{@link ViewPager}。
*/
ViewPager mViewPager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局、主布局);
//设置操作栏。
最终ActionBar ActionBar=getActionBar();
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡);
mSectionsPagerAdapter=newsectionspageradapter(getSupportFragmentManager());
//使用分区适配器设置ViewPager。
mViewPager=(ViewPager)findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
//在不同区段之间滑动时,选择相应的
//我们也可以使用ActionBar.tab#select()来完成这项工作
//对选项卡的引用。
mViewPager.setOnPageChangeListener(新的ViewPager.SimpleOnPageChangeListener(){
@凌驾
已选择页面上的公共无效(内部位置){
actionBar.setSelectedNavigationItem(位置);
}
});
//对于应用程序中的每个部分,在操作栏中添加一个选项卡。
对于(int i=0;i

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

如果您只想延迟创建选项卡,请尝试以下方法:

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

我不知道这是否是您正在寻找的,但我希望它能帮助您:)

谢谢您的回复!抱歉,我现在意识到我的问题可能有点困惑。我正在寻找一种方法,将片段创建延迟到单击选项卡时,而不是基于时间。即如果我有5个选项卡,我可以在初始加载时间保存,因为我只创建了第一个选项卡最初,因为这是显示的唯一选项卡。