如何禁用返回按钮在安卓而注销应用程序?
如果寻找更高的api级别2.0及以上 这将工作得很好
@Override public void onBackPressed() { // Do Here what ever you want do on back press; }
如果寻找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); }
把上面的代码写在你的活动中,以防止按下后退按钮
如果你想处理设备上的后退按钮,重写onBackPressed方法并什么都不做。
@Override public void onBackPressed() { if (shouldAllowBack()) { super.onBackPressed(); } else { doSomething(); } }
如果你想确保你的android客户端应用程序在你的Activity被杀死之前从某个服务器注销——>注销一个服务在它自己的线程上(这是你应该做的事情)。
禁用后退按钮并不能解决任何问题。例如,当用户接到一个电话时,您仍然会遇到同样的问题。当接到一个电话时,您的活动在从网络获得可靠应答之前就有同样多的机会被终止。
这就是为什么您应该让服务在自己的线程上等待来自网络的应答,如果没有成功,则让它再次尝试。android服务不仅不太可能在得到回复之前被杀死,而且如果它真的在完成工作之前被杀死,它总是可以被AlarmManager复活以再次尝试。
如果你想在注销时禁用应用程序,你可以弹出一个不可取消的对话框。
我正在使用它.............
@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.............. }
如果你正在使用FragmentActivity。然后像这样做
FragmentActivity
首先在Fragment中调用This。
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 ()方法。
@Override public void onBackPressed() { }
你可以用简单的方法不要调用super.onBackPressed()
@Override public void onBackPressed() { // super.onBackPressed(); // Not calling **super**, disables back button in current screen. }
你只需要重写后退按钮的方法。如果您愿意,可以让该方法为空,这样当您按下返回按钮时就不会发生任何事情。请看下面的代码:
@Override public void onBackPressed() { // Your Code Here. Leave empty if you want nothing to happen on back press. }
对我来说,只是覆盖onBackPressed()不起作用,但显式指出它应该启动哪个活动很好:
onBackPressed()
@Override public void onBackPressed(){ Intent intent = new Intent(this, ActivityYouWanToGoBack.class); startActivity(intent); }
除了这两种方法,从上面的答案。
onBackPressed () (API Level 5, Android 2.0) onKeyDown () (API Level 1, Android 1.0)
onBackPressed () (API Level 5, Android 2.0)
onKeyDown () (API Level 1, Android 1.0)
你也可以像这样重写dispatchKeyEvent()(API Level 1, android1.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); }
如果你想禁用backpressed,你不用super.OnBackPressed();
你可以在你的活动中重写onBackPressed()方法,并删除对超类的调用。
@Override public void onBackPressed() { //remove call to the super class //super.onBackPressed(); }
只需重写onBackPressed()方法,不需要调用onBackPressed方法的超类或其他方法。
或者将当前活动传递给onBackPressed()方法。
@Override public void onBackPressed() { startActivity(new Intent(this, myActivity.class)); finish(); }
将需要的活动名称替换为myActivity。
如果你正在使用fragment,那么首先调用callParentMethod()方法
public void callParentMethod(){ context.onBackPressed(); // instead of context use getActivity or something related }
然后调用empty方法
试试这个:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { return true; } return super.onKeyDown(keyCode, event); }
remove super.onBackPressed() from public void onBackPressed() work great。 它在android 9测试
super.onBackPressed()
public void onBackPressed()
禁用android中的后退按钮
@Override public void onBackPressed() { return; }
Android 13 Kotlin
onBackPressedDispatcher.addCallback(object: OnBackPressedCallback(true) { /* override back pressing */ override fun handleOnBackPressed() { //Your code here } })