在android中禁用后退按钮

时间:2011-01-24 08:26:46

标签: android button back onbackpressed

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

17 个答案:

答案 0 :(得分:625)

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

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

答案 1 :(得分:159)

如果寻找到达1.6的android api级别。

@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中编写此代码以防止按下后退按钮

答案 2 :(得分:28)

你可以这么简单的方式不要打电话给super.onBackPressed()

注意: - 除非你有充分的理由这样做,否则不要这样做。

@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}

答案 3 :(得分:21)

只需覆盖 onBackPressed()方法。

@Override
public void onBackPressed() { }

答案 4 :(得分:13)

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

 @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..............
}

答案 5 :(得分:9)

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

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

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

答案 6 :(得分:7)

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

@Override
public void onBackPressed()
{

}

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

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

将您的需求活动名称替换为myActivity。

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

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

然后调用空方法

@Override
public void onBackPressed()
{

}

答案 7 :(得分:6)

如果您使用的是FragmentActivity。然后这样做

首先在Fragment

中调用此内容
public void callParentMethod(){
    getActivity().onBackPressed();
}

然后在您的父onBackPressed课程旁边调用FragmentActivity方法。

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

答案 8 :(得分:5)

只需使用此代码:如果您想要反向禁用,则不要使用super.OnBackPressed();

 *ld main.o*

答案 9 :(得分:4)

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

答案 10 :(得分:4)

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

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

答案 11 :(得分:3)

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

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

答案 12 :(得分:3)

除上述答案外,还有以下两种方法。

  

onBackPressed()(API Level 5,Android 2.0)

     

onKeyDown()(API级别1,Android 1.0)

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

  

dispatchKeyEvent()(API级别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);
}

答案 13 :(得分:2)

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

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

答案 14 :(得分:1)

尝试一下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
 if (keyCode == KeyEvent.KEYCODE_BACK) {

   return true;
 }
   return super.onKeyDown(keyCode, event);    
}

答案 15 :(得分:1)

super.onBackPressed()中删除public void onBackPressed()效果很好。 其在android 9中进行了测试

答案 16 :(得分:0)

在android中禁用后退按钮

@Override
public void onBackPressed() {
    return;
}