android - 恢复 Activity 时重叠 fragment

标签 android layout android-fragments activity-lifecycle

我的 Android 应用程序有问题,我正在使用 Android STUDIO IDE 进行开发。 几乎当我将应用程序留在后台几分钟,或者被系统杀死或者我混合 fragment 的不同布局时。 我在下面放了一张图片:

我已经尝试了多种方法,如果你有其他人也写。提前谢谢你。

super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));

        actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.TabListener tl = new ActionBar.TabListener() {
            @Override
            public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

            }

            @Override
            public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
                pager.setCurrentItem(tab.getPosition());
                actionBar.setSelectedNavigationItem(tab.getPosition());
            }

            @Override
            public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

            }
        };

        String label1 = getResources().getString(R.string.label1);
        ActionBar.Tab tab;
        tab = actionBar.newTab();
        tab.setText(label1);

        tab.setIcon(R.drawable.download);


        //tab.setIcon(R.drawable.data);
        tab.setTabListener(tl);
        actionBar.addTab(tab);

        String label2 = getResources().getString(R.string.label2);
        tab = actionBar.newTab();
        tab.setText(label2);
        tab.setIcon(R.drawable.search);


        tab.setTabListener(tl);
        actionBar.addTab(tab);

        String label3 = getResources().getString(R.string.label3);
        tab = actionBar.newTab();
        tab.setText(label3);
        tab.setIcon(R.drawable.television);

        tab.setTabListener(tl);
        actionBar.addTab(tab);

图片:enter image description here

最佳答案

所以问题是您在 onCreate 中添加了 fragment A。导航到 fragment B 后,您的 Activity 将进入后台。在某些情况下,如您所知,android 可以终止您的后台 Activity 并强制它在进入前台时重新创建自己。因此,您的 Activity 使用 fragment B 重新创建自身,这是它进入后台时的最后状态,并添加 fragment A 因为 onCreate 被调用。您可以通过在 onCreate 中执行 savedinstancestate 检查来解决此问题。

关于android - 恢复 Activity 时重叠 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18590582/

相关文章:

Android 应用程序在 Activity 更改时崩溃,可能受布局影响

android - ListView 不适用于 fragment

android - OnItemClickListener 抽屉导航

android - 保护 Android 应用敏感数据的最佳方法?

c++ - doLayout : how to setGeometry on top of another widget?

android - 缩放 ImageView 以适应 ToolBar 并重叠

android - 更新同一对话 fragment 的多个实例

android - 如何在同一个应用程序项目中将一个库模块多次包含到多个库模块中?

android - 什么会导致已发布的 Android 应用程序自发地停止为大量用户工作?

android - ListView 和多点触控手势