如何在注销应用程序时禁用android中的后退按钮?
答案 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;
}