android开发中,按手机返回键,当前Activity 和 ProgressDialog 同时关闭?

pd=ProgressDialog.show(this,"请稍候。。刷新中",msg,true,false);pd.setCancelable(true);//点击返回键... pd = ProgressDialog.show(this, "请稍候。。刷新中", msg, true,false);
pd.setCancelable(true); //点击返回键可以取消 需要设置为true 不能取消就用false

new Thread() {
public void run() {
try {
Thread.sleep(1000); // 运行1秒为例
System.out.println("开始转动");
} catch (InterruptedException e) {
e.printStackTrace();
}

//pd就是ProgressDialog
//下面是 返回键 按钮 监听 代码
public boolean onKeyDown(int keyCode,KeyEvent event){
//按下键盘上返回按钮
if(keyCode == KeyEvent.KEYCODE_BACK){
pd.dismiss();
pd.cancel();
finish();
}

return super.onKeyDown(keyCode, event);
}
//我现在的问题是我要按两下才可以退出页面, 按一下是取消 ProgressDialog ,第二下才是 退出页面。。。。 我上面这样写应该是直接退出页面和 PD把? 为什么这样不行。。就大神指教
展开
 我来答
深蓝的忧郁cO1a2
推荐于2016-06-17 · TA获得超过404个赞
知道答主
回答量:198
采纳率:0%
帮助的人:153万
展开全部
ProgressDialog 是 Dialog 的子类。
而Dialog有一个setOnCancelListener函数,可以监听对话框的取消事件,对话框在使用Back键或取消按钮关闭时,会执行对话框的cancel函数,这是就会触发事件。
所以你只要加一句pd.setOnCancelListener(...),在里面写好回调即可。
更多追问追答
追问
pd.setOnCancelListener(new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
finish();
}
});
//我写了这个还是要点两次。。又是依次关闭pd 和当前页面
追答

public class TestActivity extends Activity {

private ProgressDialog dialog = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

dialog = ProgressDialog.show(this, "ProgressDialog", "Test Cancel");

dialog.setCancelable(true);

dialog.setOnCancelListener(new OnCancelListener() {

@Override

public void onCancel(DialogInterface arg0) {

finish();

}

});

}

}


已测试好用。你放在单独的Activity里试一试,应该是你的调用方式出错了。


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式