java.lang.IllegalStateException: фрагмент больше не существует для ключа f1999: индекс 1

Я обнаружил эту проблему и выполнил следующее решение, чтобы исправить ее, но пока не смог решить эту проблему. А также я пытался использовать fragmentpageradapter вместо fragmentstatepageradapter, но все еще сталкивался с той же проблемой.

java.lang.IllegalStateException: Fragement no больше существует для ключа f1: индекс 3

этот сбой происходит, когда я возвращаюсь к фрагменту, который содержит окно просмотра.

Любая идея?

сначала помещаем детальный фрагмент товара в "основной контейнер"

public void switchToProductDetail(SearchHelper searchHelper, Product product)
{
    ProductDetailFragment productDetailFragment = new ProductDetailFragment();
    productDetailFragment.product = product;
    productDetailFragment.searchHelper = searchHelper;
    setNewFragment(productDetailFragment, R.id.mainContainer, "ProductDetail", true, true, true, true);
}

а затем, если пользователь не входит в систему и нажимает кнопку «Добавить в избранное», я помещаю фрагмент подписки в контейнер «окно».

public void switchtoSignIn(SignInSignUpFragment.SignInCompleteCallBack callBack)
{
    SignInSignUpFragment signInSignUpFragment = new SignInSignUpFragment();
    signInSignUpFragment.callBack = callBack;
    setNewFragment(signInSignUpFragment, R.id.windowFL, "SignIn", true, true, true, true);

}

И основная активность xml (которая содержит maincontainer и windowFL)

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/windowFL"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:id="@+id/headerContainer" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/mainContainer"/>
</LinearLayout>

<LinearLayout
    android:id="@+id/left_menu_frame"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_marginRight="@dimen/menumargin"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#ffffff" />

    </android.support.v4.widget.DrawerLayout> 

setnewfragment метод:

@SuppressLint("CommitTransaction")
public void setNewFragment(final Fragment fragment, final int containerId, final String tag, final boolean shouldAddBackStack, final boolean shouldReplace, final boolean shouldAnimation, final boolean shouldDrawerClose) {

    if(isAnyMenuOpen() && shouldDrawerClose)
    {
        drawerLayout.closeDrawer(GravityCompat.START, true);

        drawerClosedCallBack = new DrawerClosedCallBack() {
            @Override
            public void onDrawerClosed() {
                setNewFragment(fragment, containerId, tag, shouldAddBackStack, shouldReplace, shouldAnimation, false);
            }
        };

        return;
    }

    if (fragmentManager == null)
    {
        fragmentManager = getSupportFragmentManager();
    }

    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    if (shouldAnimation)
    {
        if(fragment instanceof SignInSignUpFragment)
        {
            fragmentTransaction.setCustomAnimations(R.anim.slide_in_bottom, R.anim.fade_out, R.anim.fade_in, R.anim.slide_out_bottom);

        }
        else
        {
            fragmentTransaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right);
        }
    }

    if (shouldReplace)
    {
        fragmentTransaction.replace(containerId, fragment);

    }
    else
    {
        fragmentTransaction.add(containerId, fragment);
    }

    if(shouldAddBackStack)
    {
        fragmentTransaction.addToBackStack(tag);
    }
    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    fragmentTransaction.commitAllowingStateLoss();

}

person Ali Gürelli    schedule 15.02.2017    source источник
comment
публиковать связанный код, в основном, ваша деятельность   -  person Charuක    schedule 15.02.2017
comment
@Charu ක я разместил коды. Спасибо   -  person Ali Gürelli    schedule 15.02.2017