[英]Android-How to close progress dialog when back button is pressed
按下后退按鈕時如何關閉進度對話框?
一個更好的方法。
ProgressDialog dialog = new ProgressDialog(this);
dialog.setCancelable(true);
dialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
@Override
public void onCancel(DialogInterface dialog){
/****cleanup code****/
}});
setCancelable
方法告訴ProgressDialog在按下后退按鈕時關閉。 最后的監聽器允許您執行因取消而需要執行的任何操作(如關閉套接字)。
我發現我的方法更有用。 如果設置progressDialog.setCancelable(true); 如果用戶按下對話框外屏幕上的任何位置,它將取消對話框。 你不會想要的,對嗎? 如果只想在用戶按下后退按鈕時取消進度對話框,請使用以下代碼:
ProgressDialog pDialog;
pDialog = new ProgressDialog(MainActivity.this) {
@Override
public void onBackPressed() {
pDialog.dismiss();
}};
pDialog.setMessage("Loading");
pDialog.setCancelable(false);
pDialog.show();
這是解決方案。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dialog.dismiss();
return true;
}
return super.onKeyDown(keyCode, event);
}
或者你也可以在onPause活動方法中解除對話。
老實說我會這樣做:
Dialog接口提供了一個dialog.setCanceledOnTouchOutside(false)方法,可以精確地實現這一點。 您使用false值調用該值,用戶將無法按返回按鈕返回您的活動
ProgressDialog progressDialog = ProgressDialog.show(ActivityName.this,
"Title","Message");
progressDialog.setCancelable(true);
progressDialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
// Do something...
}
});
按后退按鈕時,會調用onCancel
。
如果單擊back button
,默認情況下, progress dialog
被dismiss
。 或者,您可以添加以下行:
progress.setCancelable(true);
另一種選擇是你可以調用finish()
然后調用progress.dismiss()
:
progress.setOnKeyListener(new ProgressDialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface arg0, int keyCode,
KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
dialog.dismiss();
}
return true;
}
});
或者,在back key
按下button event
override
方法onCancel()
方法。
ProgressDialog dialog = new ProgressDialog(yourActivity.this);
dialog.setCancelable(true);
.
.
.
progressDialog.show();
希望,這會奏效。
只需復制以下代碼並在Async中粘貼即可。
ProgressDialog dialog;
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(MainActivity.this) {
@Override
public void onBackPressed() {
dialog.cancel();
dialog.dismiss();
}
};
// dialog.setTitle("file is..");//its optional If u want set title in progress
// bar
dialog.setMessage("Loading....");
dialog.setCancelable(false);
dialog.show();
}
這是一個可能的解決方案:
Dialog dialog;
dialog = new Dialog(context,style);
dialog.setCanceledOnTouchOutside(false);
您可以在onPause活動方法中關閉對話框。 這是解決方案。 它適用於我。
@Override
public void onPause() {
super.onPause();
progressDialog.dismiss();
}
確保private ProgressDialog progressDialog;
全球宣布
並在onCreate
方法上初始化progressDialog
,如下所示:
progressDialog = new ProgressDialog(YourActivityGoesHere.this);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.