繁体   English   中英

在创建片段之前调用onCreateView

[英]onCreateView is called before fragment created

我的应用程序使用PagerView组件显示一些数据,每个选项卡都是一个片段。在应用程序中,Facebook的授权发生在单独的活动中。
问题是当用户没有足够的内存时android杀死了app的活动,并且当他在授权android尝试重新启动活动后返回时,这里发生了一些奇怪的事情。为了模拟这种情况,我将后台进程的最大数量设置为0.这是我启动app时的日志从头开始:

选项卡:创建适配器

片段:onCreateView视图:android.widget.FrameLayout {195756ef VE .... 0,0-0,0},片段:CategoryFragment {128705fc#0 id = 0x7f1000f0 android:switcher:2131755248:0}

片段:onstart android.widget.FrameLayout {195756ef VE .... 0,0-0,0},view:android.widget.FrameLayout {195756ef VE .... ...... I。 0,0-0,0},片段:CategoryFragment {128705fc#0 id = 0x7f1000f0 android:switcher:2131755248:0}

到目前为止,一切看起来都很好(片段是在选项卡适配器中创建的,然后调用了onCreateView)。在这里,当我登录Facebook并返回到应用程序后会发生什么:

片段:onDestroyView
片段:onDestroy

片段:onCreateView视图:android.widget.FrameLayout {f50f881 VE .... 0,0-0,0},片段:CategoryFragment {25f74d26#0 id = 0x7f1000f0 android:switcher:2131755248:0}

片段:onstart android.widget.FrameLayout {f50f881 VE .... 0,0-0,0},view:android.widget.FrameLayout {f50f881 VE .... ...... I。 0,0-0,0},片段:CategoryFragment {25f74d26#0 id = 0x7f1000f0 android:switcher:2131755248:0}

选项卡:创建适配器

在片段之前创建片段的视图怎么可能?
Tabs适配器类:

private class TabsAdapter extends FragmentPagerAdapter {
    private CategoryFragment fragment1;
    private PackFragment fragment2;
    private HistoryFragment fragment3;
    public TabsAdapter(FragmentManager supportFragmentManager) {
        super(supportFragmentManager);
        Log.d("fragment","tabs adapter created");
        fragment1=new CategoryFragment();
        fragment2=new PackFragment();
        fragment3=new HistoryFragment();
    }
    @Override
    public Fragment getItem(int position) {
        //Log.d("get item",position+"");
        switch (position) {
            case 0:
                return fragment1;
            case 1:
                return fragment2;
            case 2:
                return fragment3;
            default:
                return null;
        }
    }
    @Override
    public int getCount() {
        return 3;
    }
}

这里是如何实例化的:

   //after some initialization stuff
   tabs=(PuzzlePagerView) findViewById(R.id.tabs);
   tabs.setCurrentItem(0,false);
   tabs.setOffscreenPageLimit(2);
   FragmentManager fm=this.getSupportFragmentManager();
   tabs.setAdapter(new TabsAdapter(fm));

问题是,Android尝试还原活动状态及其所有片段。

super.onCreate(null);

在活动课中解决了所有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM