Android 片段替换问题

Android 片段替换问题,android,android-fragments,Android,Android Fragments,我在实现导航抽屉时遇到问题 问题是布局重叠,但只有当我让应用程序在后台运行很长一段时间(活动停止后我才停止)时才会发生这种情况 这是我用来更改片段的代码。我不是在用onStop方法做任何事情 (我应该做点什么吗?) 谢谢。有两种解决方案,您可以尝试克服重叠片段的问题 尝试(1)为xml文件中的片段设置背景色 如果不起作用, 尝试(2)通过编写自己的代码来修复此问题,在提交新的片段之前删除任何现有片段 例如: fragmentManager = getFragmentManager();

我在实现导航抽屉时遇到问题

问题是布局重叠,但只有当我让应用程序在后台运行很长一段时间(活动停止后我才停止)时才会发生这种情况

这是我用来更改片段的代码。我不是在用onStop方法做任何事情 (我应该做点什么吗?)


谢谢。

有两种解决方案,您可以尝试克服重叠片段的问题

尝试(1)为xml文件中的片段设置背景色

如果不起作用,

尝试(2)通过编写自己的代码来修复此问题,在提交新的片段之前删除任何现有片段

例如:

    fragmentManager = getFragmentManager();
    ft = fragmentManager.beginTransaction();

    mbFragment = new SettingsManageBooksFragment();
    ft.replace(R.id.setting_detail_container2, mbFragment).commit();
    mImgFragmentTitle.setImageResource(R.drawable.manage_my_books);

}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.imageButtonSettingsManageBooks:

        if (mPurchaseHistory == true) {
            ft.remove(phFragment);

            Log.d(TAG, "REMOVING PURCHASE HISTORY FRAG");

        } else if (mAudio == true) {
            ft.remove(aFragment);

            Log.d(TAG, "REMOVING AUDIO FRAG");
        } else if (mRestore == true) {
            ft.remove(rFragment);

            Log.d(TAG, "REMOVING RESTORE FRAG");
        } else if (mCopyright == true) {
            ft.remove(cFragment);

            Log.d(TAG, "REMOVING COPYRIGHT FRAG");
        } else if (mAbout == true) {
            ft.remove(abFragment);

            Log.d(TAG, "REMOVING ABOUT FRAG");
        }
        ft = fragmentManager.beginTransaction();
        mbFragment = new SettingsManageBooksFragment();
        ft.replace(R.id.setting_detail_container2, mbFragment).commit();
        mImgFragmentTitle.setImageResource(R.drawable.manage_my_books);
        mManageBooks = true;
        mPurchaseHistory = false;
        mAudio = false;
        mRestore = false;
        mCopyright = false;
        mAbout = false;

        break;
希望这会有帮助

如果您使用第一种解决方案,您可能还会遇到新片段后面的片段仍然可以单击的问题。如果发生这种情况,只需使新片段的父视图可单击即可

    fragmentManager = getFragmentManager();
    ft = fragmentManager.beginTransaction();

    mbFragment = new SettingsManageBooksFragment();
    ft.replace(R.id.setting_detail_container2, mbFragment).commit();
    mImgFragmentTitle.setImageResource(R.drawable.manage_my_books);

}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.imageButtonSettingsManageBooks:

        if (mPurchaseHistory == true) {
            ft.remove(phFragment);

            Log.d(TAG, "REMOVING PURCHASE HISTORY FRAG");

        } else if (mAudio == true) {
            ft.remove(aFragment);

            Log.d(TAG, "REMOVING AUDIO FRAG");
        } else if (mRestore == true) {
            ft.remove(rFragment);

            Log.d(TAG, "REMOVING RESTORE FRAG");
        } else if (mCopyright == true) {
            ft.remove(cFragment);

            Log.d(TAG, "REMOVING COPYRIGHT FRAG");
        } else if (mAbout == true) {
            ft.remove(abFragment);

            Log.d(TAG, "REMOVING ABOUT FRAG");
        }
        ft = fragmentManager.beginTransaction();
        mbFragment = new SettingsManageBooksFragment();
        ft.replace(R.id.setting_detail_container2, mbFragment).commit();
        mImgFragmentTitle.setImageResource(R.drawable.manage_my_books);
        mManageBooks = true;
        mPurchaseHistory = false;
        mAudio = false;
        mRestore = false;
        mCopyright = false;
        mAbout = false;

        break;