如何在注销应用程序时禁用android中的后退按钮?
对我来说,只是覆盖 onBackPressed() 没有工作,但明确指出它应该开始运作良好的活动:
onBackPressed()
@Override public void onBackPressed(){ Intent intent = new Intent(this, ActivityYouWanToGoBack.class); startActivity(intent); }
试试这个:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { return true; } return super.onKeyDown(keyCode, event); }
如果您打算处理设备上的后退按钮,则覆盖onBackPressed方法并且不执行任何操作 .
@Override public void onBackPressed() { if (!shouldAllowBack()) { doSomething(); } else { super.onBackPressed(); } }
如果寻找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中编写此代码以防止按下后退按钮
你可以这么简单的方式 Don't call super.onBackPressed()
@Override public void onBackPressed() { super.onBackPressed(); // dont call **super**, if u want disable back button in current screen. }
只需覆盖 onBackPressed() 方法即可 .
@Override public void onBackPressed() { }
我正在使用它.............
@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.............. }
如果你想确保你的android客户端应用程序在你的Activity被杀之前从某个服务器注销 - >在自己的线程上注销一个服务(这就是你应该做的事情) .
禁用后退按钮不会为您解决任何问题 . 例如,当用户接到电话时,您仍会遇到同样的问题 . 收到电话后,您的活动在从网络获得可靠答案之前有大约相同的被杀机会 .
这就是为什么你应该让服务在自己的线程上等待来自网络的答案,然后如果它没有成功再试一次 . Android服务不仅在获得回复之前被杀死的可能性要小得多,但如果它在完成作业之前真的被杀死了,它总是会被AlarmManager重新启动以再次尝试 .
如果你正在使用 FragmentActivity . 然后这样做
FragmentActivity
先打电话给你 Fragment .
Fragment
public void callParentMethod(){ getActivity().onBackPressed(); }
然后在您的父级 FragmentActivity 类中调用 onBackPressed 方法 .
onBackPressed
@Override public void onBackPressed() { //super.onBackPressed(); //create a dialog to ask yes no question whether or not the user wants to exit ... }
只需覆盖onBackPressed()方法,无需调用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 }
然后调用空方法
只是使用这段代码:如果你想要反向禁用,你就不要使用super.OnBackPressed();
如果要在注销时禁用应用程序,可以弹出不可取消的对话框 .
您可以覆盖活动中的 onBackPressed() 方法并删除对超类的调用 .
@Override public void onBackPressed() { //remove call to the super class //super.onBackPressed(); }
您只需要覆盖后退按钮的方法 . 如果您愿意,可以将方法保留为空,以便在按下后退按钮时不会发生任何事情 . 请看下面的代码:
@Override public void onBackPressed() { // Your Code Here. Leave empty if you want nothing to happen on back press. }
除了从上面的答案中形成这两种方法 .
onBackPressed()(API Level 5,Android 2.0)onKeyDown()(API Level 1,Android 1.0)
您也可以像这样覆盖 dispatchKeyEvent() (API Level 1, Android 1.0) ,
dispatchKeyEvent()
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); }
15 回答
对我来说,只是覆盖
onBackPressed()
没有工作,但明确指出它应该开始运作良好的活动:试试这个:
如果您打算处理设备上的后退按钮,则覆盖onBackPressed方法并且不执行任何操作 .
如果寻找android api级别高达1.6 .
如果寻找更高的api级别2.0及以上,这将是很好的
在您的Activity中编写此代码以防止按下后退按钮
你可以这么简单的方式 Don't call super.onBackPressed()
注意: - 除非您有充分理由这样做,否则不要这样做 .
只需覆盖 onBackPressed() 方法即可 .
我正在使用它.............
如果你想确保你的android客户端应用程序在你的Activity被杀之前从某个服务器注销 - >在自己的线程上注销一个服务(这就是你应该做的事情) .
禁用后退按钮不会为您解决任何问题 . 例如,当用户接到电话时,您仍会遇到同样的问题 . 收到电话后,您的活动在从网络获得可靠答案之前有大约相同的被杀机会 .
这就是为什么你应该让服务在自己的线程上等待来自网络的答案,然后如果它没有成功再试一次 . Android服务不仅在获得回复之前被杀死的可能性要小得多,但如果它在完成作业之前真的被杀死了,它总是会被AlarmManager重新启动以再次尝试 .
如果你正在使用
FragmentActivity
. 然后这样做先打电话给你
Fragment
.然后在您的父级
FragmentActivity
类中调用onBackPressed
方法 .只需覆盖onBackPressed()方法,无需调用onBackPressed方法的超类或其他方法 .
或者将当前活动传递给onBackPressed()方法 .
将您的require活动名称替换为myActivity .
如果你正在使用片段,那么首先调用callParentMethod()方法
然后调用空方法
只是使用这段代码:如果你想要反向禁用,你就不要使用super.OnBackPressed();
如果要在注销时禁用应用程序,可以弹出不可取消的对话框 .
您可以覆盖活动中的
onBackPressed()
方法并删除对超类的调用 .您只需要覆盖后退按钮的方法 . 如果您愿意,可以将方法保留为空,以便在按下后退按钮时不会发生任何事情 . 请看下面的代码:
除了从上面的答案中形成这两种方法 .
您也可以像这样覆盖
dispatchKeyEvent()
(API Level 1, Android 1.0) ,