安卓开发重写onBackPressed()方法不能处理对话框返回事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓开发重写onBackPressed()方法不能处理对话框返回事件相关的知识,希望对你有一定的参考价值。
一般在一个activity里面开启一个对话框AlertDialog的时候,按安卓手机的返回键就默认对话框消失。但我想在界面打开对话框的时候按返回键程序干点别的事情,例如关闭一个线程,或者显示一个土司。就像这样:
public void onBackPressed()
//如果绑定窗口已经开启,就关闭。
if(dai_open) //dai_open是窗口开启状态量
Toast.makeText(MainActivity.this, "对话框开着,现在关闭", 0).show();
else
Toast.makeText(MainActivity.this, "对话框没有开启", 0).show();
super.onBackPressed();
但是当我开启对话框时候点击手机返回键时候,没有反应。只有对话框关闭了点击返回键,他才起会打印土司。请大神解决
我在此给你两个解决方法:
1、使用Popupwindow实现对话框;然后重写里面的返回事件;
2、可以自定义一个Activity,让其表现的类似于对话框;
综上的两种方法都是绕过AlertDialog,自己实现对话框的。
我常用的是第二种方法,使用Activity自定义自己的对话框。追问
怎么用一个activity来代替的啊
追答把Activity描绘成一个窗口的样式即可。
这方面你可以到网上搜索一下使用android的Activity自定义对话框。
应该会有相关的DEMO的。
@Override
public void onBackPressed()
// TODO Auto-generated method stub
Intent backIntent = new Intent(Activity3.this, Activity1.class);
Bundle bundle = new Bundle();
if(!clickOk)
bundle.putString("send", "ERROR");
backIntent.putExtras(bundle);
Activity3.this.setResult(1, backIntent);
Activity3.this.finish();
//super.onBackPressed();
Android 重写onBackPressed()方法 不执行问题
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
Toast.makeText(this, "呵呵哈哈", Toast.LENGTH_LONG).show();
//return ;
}
这样,当按回退健时,activity退出,并且提示"呵呵哈哈"!
当注释掉super.onBackPressed()时,按回退健,只提示"呵呵哈哈"!
onBackPressed()在Activity.class里实现:
public void onBackPressed() {
finish();
}
super.onBackPressed()是执行系统的默认动作,就是退出当前activity,所以当我们要重写这个函数时,不要加super.onBackPressed(),就可以不退出activity,执行自己的代码啦~
来自:http://www.2cto.com/kf/201304/204021.html
以上是关于安卓开发重写onBackPressed()方法不能处理对话框返回事件的主要内容,如果未能解决你的问题,请参考以下文章
Android 重写onBackPressed()方法 不执行问题
android中使用startactivityforresult跳转Activity后需要重写onBackPressed()方法