在onSaveInstanceState - DialogFragment之后无法执行此操作

Bro*_*oak 4 android android-fragments

我已经覆盖了onSavedInstanceState并删除了super,我没有做任何事务,更不用说易失性函数或异步函数中的事务了.

我在自定义回调'onUserExistsListener'中调用它

        @Override
        public Boolean userExists(Boolean exists) {
            if (exists) {


            }
            else
            {
             AlertDialogFragment Frag = AlertDialogFragment.newInstance(0, null);
             Frag.show(getSupportFragmentManager(), "warndialog");
            }
   };
Run Code Online (Sandbox Code Playgroud)

尝试了其他SO问题中提出的所有内容,仍然没有找到解决办法?任何人?

码:

AlertDialogFragment Frag = AlertDialogFragment.newInstance(0, null);
 Frag.show(getSupportFragmentManager(), "warndialog");
Run Code Online (Sandbox Code Playgroud)

过程:

OnCreate :( LoadNames函数)

LoadNames回调 - >显示对话框.

进一步:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        add_name_to_db();
    }
Run Code Online (Sandbox Code Playgroud)

功能:

public void add_name_to_db() {
        Details.checkNameExists(user_txt.getText().toString());
        Details.setOnUserExistsListener(new onUserExistsListener() {

            @Override
            public Boolean userExists(Boolean exists) {

                if (exists) 
                    {

                    } else {

                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                AlertDialogFragment Frag = AlertDialogFragment.newInstance(0, null);
                                Frag.show(getSupportFragmentManager(), "warndialog");

                            }

                        });

                    }
                } else {
                    Toast.makeText(getApplicationContext(), "This is not a valid KIK username",
                            Toast.LENGTH_SHORT).show();
                }

                return exists;
            }

        });

    }
Run Code Online (Sandbox Code Playgroud)

Lui*_*uis 6

通过调用Frag.show(getSupportFragmentManager(), "warndialog");,您实际上正在执行片段事务(请参阅show()).

如果已调用活动的onSaveInstanceState()方法,则在尝试显示对话框时将抛出IllegalStateException.您需要更改代码以确保在显示对话框片段时,在活动状态恢复后(即onPostResume())执行此操作.有关更多信息,请参阅此博客文章.

您还可以提交允许状态丢失的交易;