【问题标题】:Prevent Dialog themed activity from closing onTouchOutside and onBackPressed防止以对话框为主题的活动关闭 onTouchOutside 和 onBackPressed
【发布时间】:2013-09-22 21:40:31
【问题描述】:

我有一个以对话框为主题的活动(是的,它必须是活动,而不是对话框片段或任何其他类型的对话框,因为此活动中使用了库)没有默认图像,此活动主题对话框会弹出,我希望在用户上传照片之前无法取消此活动主题对话框。目前,活动主题对话框很小,只要用户在它取消的活动对话框之外单击,它就会具有透明背景。

那么有什么好的方法可以防止在用户 onTouchOutside 或回击时取消以活动为主题的对话框?

【问题讨论】:

    标签: android android-activity dialog touch-event


    【解决方案1】:

    您实际上拥有的是一个 Activity(即使它看起来像一个 Dialog),因此如果您希望在单击背景 Activity 时保持打开状态,则应该从您的 Activity 中调用 setFinishOnTouchOutside(false)

      Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_yoptions);
        this.setFinishOnTouchOutside(false);
    }
    

    编辑:这仅适用于 android API 级别 11 或更高版本

    并在没有 super() 的情况下覆盖 onBackPressed() 方法以防止按下后退按钮。

    希望对你有帮助~~

    【讨论】:

      【解决方案2】:

      有两种方法。但它在 api 11 之后有效。

      1. 使用主题。 Android 为其提供了主题的属性。 (http://developer.android.com/reference/android/R.attr.html#windowCloseOnTouchOutside)

      2. 使用代码。 您也可以从代码中设置此属性。 (http://developer.android.com/reference/android/app/Activity.html#setFinishOnTouchOutside(boolean)

      【讨论】:

      • 两者都不起作用。如果这很重要,我用于活动的主题是 Sherlock.Dialog.Light
      【解决方案3】:

      将对话框的这两种方法设置为false

      SetCancelablesetCanceledonTouchOutside

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-20
        • 1970-01-01
        • 2021-03-28
        相关资源
        最近更新 更多