首页 文章

在android中禁用后退按钮

提问于
浏览
297

如何在注销应用程序时禁用android中的后退按钮?

15 回答

  • 1

    对我来说,只是覆盖 onBackPressed() 没有工作,但明确指出它应该开始运作良好的活动:

    @Override
    public void onBackPressed(){
      Intent intent = new Intent(this, ActivityYouWanToGoBack.class);
      startActivity(intent);
    }
    
  • 6

    试试这个:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_BACK) {
    
       return true;
     }
       return super.onKeyDown(keyCode, event);    
    }
    
  • 4

    如果您打算处理设备上的后退按钮,则覆盖onBackPressed方法并且不执行任何操作 .

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

    如果寻找android api级别高达1.6 .

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_BACK) {
         //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
         return true;
         }
         return super.onKeyDown(keyCode, event);    
    }
    

    如果寻找更高的api级别2.0及以上,这将是很好的

    @Override
    public void onBackPressed() {
        // Do Here what ever you want do on back press;
    }
    

    在您的Activity中编写此代码以防止按下后退按钮

  • 20

    你可以这么简单的方式 Don't call super.onBackPressed()

    注意: - 除非您有充分理由这样做,否则不要这样做 .

    @Override
    public void onBackPressed() {
        super.onBackPressed();
    // dont call **super**, if u want disable back button in current screen.
    }
    
  • 616

    只需覆盖 onBackPressed() 方法即可 .

    @Override
    public void onBackPressed() { }
    
  • 9

    我正在使用它.............

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode==KeyEvent.KEYCODE_BACK)
            Toast.makeText(getApplicationContext(), "back press",      
         Toast.LENGTH_LONG).show();
    
        return false;
           // Disable back button..............
    }
    
  • 6

    如果你想确保你的android客户端应用程序在你的Activity被杀之前从某个服务器注销 - >在自己的线程上注销一个服务(这就是你应该做的事情) .

    禁用后退按钮不会为您解决任何问题 . 例如,当用户接到电话时,您仍会遇到同样的问题 . 收到电话后,您的活动在从网络获得可靠答案之前有大约相同的被杀机会 .

    这就是为什么你应该让服务在自己的线程上等待来自网络的答案,然后如果它没有成功再试一次 . Android服务不仅在获得回复之前被杀死的可能性要小得多,但如果它在完成作业之前真的被杀死了,它总是会被AlarmManager重新启动以再次尝试 .

  • 26

    如果你正在使用 FragmentActivity . 然后这样做

    先打电话给你 Fragment .

    public void callParentMethod(){
        getActivity().onBackPressed();
    }
    

    然后在您的父级 FragmentActivity 类中调用 onBackPressed 方法 .

    @Override
    public void onBackPressed() {
      //super.onBackPressed();
      //create a dialog to ask yes no question whether or not the user wants to exit
      ...
    }
    
  • 158

    只需覆盖onBackPressed()方法,无需调用onBackPressed方法的超类或其他方法 .

    @Override
    public void onBackPressed()
    {
    
    }
    

    或者将当前活动传递给onBackPressed()方法 .

    @Override
    public void onBackPressed()
    {
       startActivity(new Intent(this, myActivity.class));  
       finish();
    }
    

    将您的require活动名称替换为myActivity .

    如果你正在使用片段,那么首先调用callParentMethod()方法

    public void callParentMethod(){
        context.onBackPressed(); // instead of context use getActivity or something related
    }
    

    然后调用空方法

    @Override
    public void onBackPressed()
    {
    
    }
    
  • 4

    只是使用这段代码:如果你想要反向禁用,你就不要使用super.OnBackPressed();

    @Override
    public void onBackPressed() {
    
    }
    
  • 5

    如果要在注销时禁用应用程序,可以弹出不可取消的对话框 .

  • 2

    您可以覆盖活动中的 onBackPressed() 方法并删除对超类的调用 .

    @Override
    public void onBackPressed() {
      //remove call to the super class
      //super.onBackPressed();
    }
    
  • 3

    您只需要覆盖后退按钮的方法 . 如果您愿意,可以将方法保留为空,以便在按下后退按钮时不会发生任何事情 . 请看下面的代码:

    @Override
    public void onBackPressed() 
    {
       // Your Code Here. Leave empty if you want nothing to happen on back press.
    }
    
  • 3

    除了从上面的答案中形成这两种方法 .

    onBackPressed()(API Level 5,Android 2.0)onKeyDown()(API Level 1,Android 1.0)

    您也可以像这样覆盖 dispatchKeyEvent() (API Level 1, Android 1.0)

    dispatchKeyEvent()(API Level 1,Android 1.0)

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        // TODO Auto-generated method stub
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
            return true;
        }
        return super.dispatchKeyEvent(event);
    }
    

相关问题