android - 如何防止自定义对话框在 asynctask onPostExecute 中弹出两次?

标签 android android-asynctask customdialog

我在 AsyncTask 的 onpostexecute 方法中使用自定义对话框,它被弹出两次。当用户单击按钮时,必须关闭对话框,这似乎工作正常。

有人可以解释为什么它被调用两次吗?

@Override
protected void onPostExecute(Void result) {
    super.onPostExecute(result);
    if (pDialog != null) {
        pDialog.dismiss();
    }

    try {
        if (responseFromServer.contains("x")) {
            // Pop up to create password
            final Dialog dialog = new Dialog(getActivity());
            dialog.setContentView(R.layout.dialog_password);
            dialog.setTitle("Title...");
            dialog.setCancelable(false);

            final TextView etpassword = (TextView) dialog.findViewById(R.id.etpassword_dialog);
            final Button btnpassword = (Button) dialog
                    .findViewById(R.id.btnsavepassword_dialog);

            btnpassword.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                    if (etpassword.getText().toString().length() == 0) {
                        Toast.makeText(getActivity(), "Enter password", Toast.LENGTH_SHORT)
                                .show();
                    } else if (etpassword.getText().toString().length() < 6) {
                        Toast.makeText(getActivity(),
                                "Password should contain minimmum 6 characters",
                                Toast.LENGTH_SHORT).show();
                    } else {
                        dialog.dismiss();

                    }

                }
            });

            if (!dialog.isShowing()) {
                dialog.show();
            }

        }

        else {
            Toast.makeText(getActivity(), "Unexpected error occurred. Please try again",
                    Toast.LENGTH_SHORT).show();
        }

    } catch (Exception e) {
        Log.v("Main FRagment FB async::::::", e.getMessage());
    }

}    

最佳答案

您可以在显示自定义对话框之前编写以下条件,

if ( !dialog.isShowing() )
{
   dialog.show();
}

关于android - 如何防止自定义对话框在 asynctask onPostExecute 中弹出两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21821318/

相关文章:

java - 使用 mockito 模拟 AsyncTask 导致 NullPointerException

java - 使用 AsyncTask,但遇到意外行为

使用 Bitbucket 管道的 Android NDK CI

android - 如何在启动 Asynctask 10 秒后显示 toast

Android 单元测试未报告失败并显示 fail()

android - 如何一次只显示一个对话框?

android - 带有关闭按钮的自定义对话框

android - 在 AlertDialog 中更改 textView 文本时出现 NullPointerException

java - 如何在android中滑动页面添加不同的内容

android - 使用 opencv 在 Android 中进行阈值处理