onBack pressed()显示ProgressDialog时不会触发 [英] onBackPressed() doesn't trigger when showing ProgressDialog

查看:159
本文介绍了onBack pressed()显示ProgressDialog时不会触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经尝试了很多办法来触发回pressed ()事件时, progressDialog 被显示。但是,没有工作。如果我提供 progDialog.setcancelable(真); 我能够驳回 progressDialog ,但仍是 onBack pressed ()不会被触发。

I have tried a lot of ways to trigger the backPressed() event when the progressDialog is displayed. But none works. If I provide progDialog.setcancelable(true); I am able to dismiss the progressDialog but still the onBackPressed() doesn't get triggered.

推荐答案

在ProgressDialog是积极的,如果佑preSS后退键来执行yopur自己的业务,你必须设置 setOnCancelListener 的progressdialog。
写在 onCancel你的逻辑()法的例子,你已经写在onBack pressed(整个逻辑)事件时,这些你要在这里写东西。

When ProgressDialog is active if yiou press back key to perform yopur own operations you have to set setOnCancelListener to the progressdialog. write your logic inside onCancel() method example the whole logic that you have written in onBackPressed() event those things you have to write here.

import android.app.Activity;

import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;

import android.os.Bundle;

import android.view.KeyEvent;
import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class CancelProgressDialog extends Activity {

    ProgressDialog myProgressDialog = null;

    @Override
    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

        /* Create a very simple button */

        Button b = new Button(this);

        this.setContentView(b);

        b.setText("Show ProgressBar...");

        b.setOnClickListener(myProgressBarShower);

    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        System.out.println("...any key is pressed....");
        if (keyCode == KeyEvent.KEYCODE_BACK)
        {
            System.out.println("...BackButton is pressed...");
            if( (myProgressDialog!= null) && myProgressDialog.isShowing()){
                myProgressDialog.dismiss();
            }
        }
        return super.onKeyDown(keyCode, event);
    }

    /** OnClickListener that fakes some work to be done. */

    OnClickListener myProgressBarShower = new OnClickListener() {

        // @Override

        public void onClick(View arg0) {

            // Display an indeterminate Progress-Dialog

            myProgressDialog = ProgressDialog.show(CancelProgressDialog.this,

            "Please wait...", "Doing Extreme Calculations...", true);
            myProgressDialog.setOnCancelListener(new OnCancelListener() {

                public void onCancel(DialogInterface arg0) {
                    // TODO Auto-generated method stub
                    System.out.println("...cancel button is pressed");
//                  perform your task here
                }
            });
            myProgressDialog.setCancelable(true);



        }



    };

}

谢谢
迪帕克

Thanks Deepak

这篇关于onBack pressed()显示ProgressDialog时不会触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆