java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState with DialogFragment

后端 未结 10 1238
孤独总比滥情好
孤独总比滥情好 2020-12-09 01:56

I am facing issue with DialogFragment / getSupportFragmentManager / Android version 4.x

01-10 19:46:48.228: E/AndroidRuntime(9879): java.lang.IllegalStateExc         


        
10条回答
  •  执念已碎
    2020-12-09 02:23

    too late answer but may be the correct answer. I made a parent class and and dialog fragment extends from it

     public class BaseDialogFragment extends DialogFragment {
    
    @Override
    public void show(FragmentManager manager, String tag) {
        try {
            FragmentTransaction ft = manager.beginTransaction();
            ft.add(this, tag).addToBackStack(null);
            ft.commitAllowingStateLoss();
        } catch (IllegalStateException e) {
            Log.d("ABSDIALOGFRAG", "Exception", e);
        }
    }
    
    boolean mIsStateAlreadySaved = false;
    boolean mPendingShowDialog = false;
    
    @Override
    public void onResume() {
        onResumeFragments();
        super.onResume();
    }
    
    public void onResumeFragments(){
        mIsStateAlreadySaved = false;
        if(mPendingShowDialog){
            mPendingShowDialog = false;
            showSnoozeDialog();
        }
    }
    
    @Override
    public void onPause() {
        super.onPause();
        mIsStateAlreadySaved = true;
    }
    
    private void showSnoozeDialog() {
        if(mIsStateAlreadySaved){
            mPendingShowDialog = true;
        }else{
            FragmentManager fm = getFragmentManager();
            BaseDialogFragment snoozeDialog = new BaseDialogFragment();
            snoozeDialog.show(fm, "BaseDialogFragment");
        }
    }
    

    }

提交回复
热议问题