【问题标题】:Disabling the back button on an activity when a dialogfragment is shown显示对话框片段时禁用活动上的后退按钮
【发布时间】:2018-02-23 09:32:46
【问题描述】:

我有一个显示对话片段的活动。 我已经将可取消的 dialogfragment 设置为 false,但底层活动仍会捕获后退按钮按下。 我的基础活动已覆盖 onBackPressed 方法,但我不希望它在显示对话框片段时运行。

当显示对话框片段时如何禁用后退按钮? 如果显示 dialogfragment 并忽略后退按钮按下,我是否从活动 onBackPressed 方法中检查?

【问题讨论】:

    标签: android android-activity fragment


    【解决方案1】:

    你必须像这样尝试.. 代码粘贴到您的活动中

    当您显示dialogfragment 时,设置shouldAllowBack 为假,否则设置为真

    @Override
    public void onBackPressed() {
       if (!shouldAllowBack) {
           doSomething...;
       } else {
           super.onBackPressed();
       }
    }
    

    否则

    按照这个方法

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(!shouldAllowBack && keyCode==KeyEvent.KEYCODE_BACK) {
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }
    

    【讨论】:

      【解决方案2】:

      在显示你的DialogFragment时设置isBackDisable = true

      在你的 onBackPressed() 上:

          @Override
          public void onBackPressed() {
              if (isBackDisable) return; // funtion will do nothing
      
              // do something from here. 
              Log.e("back disabled",false); // if isBackDisable = false then log will be printed
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        相关资源
        最近更新 更多