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

我在自定义回调“onUserExistsListener”中调用它

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


            }
            else
            {
             AlertDialogFragment Frag = AlertDialogFragment.newInstance(0, null);
             Frag.show(getSupportFragmentManager(), "warndialog");
            }
   };

已经尝试了其他 SO 问题中建议的所有内容,但仍然没有找到解决方案?任何人?

代码:
AlertDialogFragment Frag = AlertDialogFragment.newInstance(0, null);
 Frag.show(getSupportFragmentManager(), "warndialog");

过程:

OnCreate: (LoadNames 函数)

LoadNames 回调 -> 显示对话框。

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

        add_name_to_db();
    }

功能:
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;
            }

        });

    }

最佳答案

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

如果 Activity 的 onSaveInstanceState() 方法已被调用,则当您尝试显示对话框时将抛出 IllegalStateException。您需要更改代码以确保在显示对话框 fragment 时,是在恢复 Activity 状态(即 onPostResume())之后进行的。有关更多信息,请参阅此 blog post

您还可以提交允许状态 loss 的事务;

关于android - onSaveInstanceState - DialogFragment 后无法执行此操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21295991/

10-10 09:32