【问题标题】:how to disable back button in android [duplicate]如何在android中禁用后退按钮[重复]
【发布时间】:2011-08-06 02:42:14
【问题描述】:

我正在制作交换应用程序...我想禁用后退按钮。所以我使用这段代码......并将意图传递给它......

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

但是当我在模拟器上按下后退按钮运行时,它会更新活动,但是当我按下后退按钮时,它会切换到模拟器的主页.. 请建议他们是否有其他方法

【问题讨论】:

  • 您可以覆盖这些方法dispatchKeyEventonBackPressedonKeyDown。更多信息请参考this answer

标签: android back-button


【解决方案1】:

必须添加 return 才能在所有设备上成功运行,如果我不包含 return,我的 Note-3 和 HTC 仍会返回!

  @Override
  public void onBackPressed() {
        return;
  }

【讨论】:

  • 这看起来很奇怪,因为在这种情况下,Java 看不出不返回和返回之间没有区别。 Return 只是退出方法,什么都不做。
  • 只是发布发生的事情,我没有技术原因。
【解决方案2】:
 @Override
 public void onBackPressed() {

    //super.onBackPressed();
    if(SOME_CONDITION_TO_CHECK){
        //THIS BLOCK WILL NOT DO ANYTHING AND WOULD DISABLE BACK BUTTON             
    }else{
       super.onBackPressed();
       //THIS BLOCK WILL BE CALLED IF ABOVE COND IS FALSE, AND WOULD ENABLE BACK BUTTON
    }   

 }

【讨论】:

    【解决方案3】:
    @Override
    public void onBackPressed() {
        // do nothing.
    }
    

    【讨论】:

    • 我刚刚申请了@Override public void onBackPressed() { // 什么都不做。返回;现在通过应用意图,我可以切换到我想要的页面
    • void 方法中的“不返回 true”真的已经持续了两年多吗?来吧...这里有几个更完整和正确的答案。
    【解决方案4】:

    你必须重写onBackPressed() 函数。下面我给个办法:

       @Override
        public void onBackPressed() {
           //make some alert for the user
        }
    

    【讨论】:

      【解决方案5】:

      如果你想通过按下后退按钮继续某个活动,请在你的活动中覆盖此方法

       @Override
          public void onBackPressed() {
              // do nothing.
              Intent intent = new Intent(SocialPlugIns.this, MainActivity.class);
              Log.i("Hello", "This is Coomon Log");
              startActivity(intent);
                 return;
          }
      

      【讨论】:

        【解决方案6】:

        这是我的解决方案 它适用于 Android 2.2

        覆盖 onBackPressed() ...

        public void onBackPressed() {
           // check if you are in the right mode 
           if (getCurrentState() == FORM_STATE_BROWSE ) {
               // ok do default back action
               super.onBackPressed();
           }
        
           // exit skipping "onBackPressed()"
           return;
        }
        

        【讨论】:

          【解决方案7】:

          你试过 onBackPressed() 吗?

          @Override
          public void onBackPressed() {
                 // Do as you please
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-04-09
            • 2011-04-06
            • 2018-03-29
            • 2011-07-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多