我想要做什么:当应用程序启动时,它会从数据库中读取一个电子邮件地址。如果未设置电子邮件地址,它将启动另一个用于添加电子邮件地址的对话活动。
如果用户不添加电子邮件,他将无法关闭该对话框活动,因此单击关闭按钮不会关闭对话框活动。
我遇到的问题是,如果用户单击后退按钮,对话框活动将关闭,并且主要活动在没有设置电子邮件地址的情况下启动。我想要做的是如果用户在这种情况下单击后退按钮以关闭应用程序。
我不得不提一下,当我想编辑电子邮件地址时,我正在使用相同的对话活动。
我想要做什么:当应用程序启动时,它会从数据库中读取一个电子邮件地址。如果未设置电子邮件地址,它将启动另一个用于添加电子邮件地址的对话活动。
如果用户不添加电子邮件,他将无法关闭该对话框活动,因此单击关闭按钮不会关闭对话框活动。
我遇到的问题是,如果用户单击后退按钮,对话框活动将关闭,并且主要活动在没有设置电子邮件地址的情况下启动。我想要做的是如果用户在这种情况下单击后退按钮以关闭应用程序。
我不得不提一下,当我想编辑电子邮件地址时,我正在使用相同的对话活动。
尝试覆盖 onBackPressed() 方法并且什么都不做。
Override onBackPressed
,检查用户是否插入了任何电子邮件地址。如果不是直接返回而不调用 super.onBackPressed()。
@Override
public void onBackPressed() {
if(yourEmailEditText.getText() == null
|| yourEmailEditText.getText().toString().trim().length() == 0){
return
}
super.onBackPressed();
}
您可以在构造函数的第二个参数之一中将 Dialog 设置为不可取消:
Dialog(Context context, boolean cancelable, DialogInterface.OnCancelListener cancelListener)
还要考虑如果用户通过任何方式(硬件的任何按钮等)绕过对话框会发生什么。您可以简单地将其解释为用户想要退出应用程序。