我在AsyncTask中的onpostexecute方法中使用自定義對話框,它被彈出兩次。當用戶點擊一個按鈕時,對話框必須關閉,這似乎工作正常。如何防止自定義對話框在onPostExecute的asynctask中彈出兩次?
有人可以闡明爲什麼它被稱爲兩次?
@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());
}
}
你是說onPostExecute被兩次調用同一個任務嗎?或者這個對話是神祕地彈出兩次? (按順序 - 第一個被排除之後的一個,或者兩個都一起?)或者是否有可能有多個可能並行運行的任務?我懷疑當你的對話框可見(並且抽取消息)時,其他任務正在完成並且正在調用onPostExecute。這只是一個猜測。 – selbie
@ user3121673您是否試圖說您的'ProgressDialog'顯示兩次?或者你的'Custom Dialog'顯示兩次? – GrIsHu
你在工作片段的活動嗎? – Piyush