【问题标题】:dialog activity control对话活动控制
【发布时间】:2012-10-29 10:14:00
【问题描述】:

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

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

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

我必须提到,当我想编辑电子邮件地址时,我正在使用相同的对话活动。

【问题讨论】:

    标签: android android-activity dialog


    【解决方案1】:

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

    @Override
    public void onBackPressed() {
        if(yourEmailEditText.getText() == null 
           || yourEmailEditText.getText().toString().trim().length() == 0){
              return
        }
        super.onBackPressed();
    }
    

    【讨论】:

    • android 中没有什么叫做dialog Activity。它要么是一个对话框(AlertDialog、ProgressDialog),要么是一个活动。 onBackPressed 应该在您的 Activity 类中被覆盖。您只需要确保在onBackPressedonBackPressed中获得对EditText 的引用,其中输入了电子邮件。
    • 好的。这很好用。我所说的“对话活动”是指在清单中设置为作为对话打开的活动:)
    • 我的解决方案有效。但您也只需考虑@rgrocha 的答案。这也可能有用..
    • 好的。还有一个问题:如何将活动设置为在外部单击时不关闭?我知道如何在自定义对话框中执行此操作,但在这种情况下我不知道如何执行此操作
    • 找到了。只需将 this.setFinishOnTouchOutside(false);在像对话框一样打开的活动中。没有别的了:)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-30
        • 1970-01-01
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多