0

我想要做什么:当应用程序启动时,它会从数据库中读取一个电子邮件地址。如果未设置电子邮件地址,它将启动另一个用于添加电子邮件地址的对话活动。

如果用户不添加电子邮件,他将无法关闭该对话框活动,因此单击关闭按钮不会关闭对话框活动。

我遇到的问题是,如果用户单击后退按钮,对话框活动将关闭,并且主要活动在没有设置电子邮件地址的情况下启动。我想要做的是如果用户在这种情况下单击后退按钮以关闭应用程序。

我不得不提一下,当我想编辑电子邮件地址时,我正在使用相同的对话活动。

4

3 回答 3

1

尝试覆盖 onBackPressed() 方法并且什么都不做。

于 2012-10-29T10:16:53.257 回答
1

Override onBackPressed,检查用户是否插入了任何电子邮件地址。如果不是直接返回而不调用 super.onBackPressed()。

@Override
public void onBackPressed() {
    if(yourEmailEditText.getText() == null 
       || yourEmailEditText.getText().toString().trim().length() == 0){
          return
    }
    super.onBackPressed();
}
于 2012-10-29T10:20:53.960 回答
1

您可以在构造函数的第二个参数之一中将 Dialog 设置为不可取消:

 Dialog(Context context, boolean cancelable, DialogInterface.OnCancelListener cancelListener)

还要考虑如果用户通过任何方式(硬件的任何按钮等)绕过对话框会发生什么。您可以简单地将其解释为用户想要退出应用程序。

于 2012-10-29T10:35:34.887 回答