#1 楼
重写onBackPressed方法,如果要处理设备上的后退按钮,则什么也不做。@Override
public void onBackPressed() {
if (shouldAllowBack()) {
super.onBackPressed();
} else {
doSomething();
}
}
评论
这比覆盖关键的处理方法更好,更干净,并且具有相同的效果。好答案!
– Nik Reiman
2011年5月13日在8:02
伟大的解决方案伙计。有什么办法可以使用主页按钮执行此操作?
– Datta Kunde
2011年6月8日7:01
这很棒!实际上,我想始终在退出任何其他活动时都回到我的主要活动,而重写此方法可以使我很轻松地做到这一点。
– Jim
13年4月3日在20:14
糟糕,我忘记删除了super.onBackPressed()。
–亚里斯·迈克尔(Aristo Michael)
2015年10月7日14:40
#2 楼
如果要寻找更高的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的api级别要求相比,此方法比使用onbackpressed更向后兼容
– AndrewPK
2011年9月7日,下午3:40
好答案。尽管我的项目不需要它,但我感谢您提供了新旧方法。这应该标记为正确答案。 +1
– Jim
13年4月3日在20:16
@Javanator,第二个对我不起作用(例如,对于API级别16),但是第一个像个魅力
–noloman
13年7月9日在14:27
#3 楼
您可以通过这种简单的方式进行操作不要调用super.onBackPressed()注意:-除非有充分的理由,否则请不要这样做。
@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
评论
关于“为什么不”的解释会很好。谢谢。
–几乎是初学者
17年3月12日在9:24
不调用.super很重要!
–冉
17年3月17日在15:17
@almostabeginner,因为不调用super将使后退按钮的正常使用无效。当正常工作的按钮停止工作时,用户会感到恐惧。他们可能会认为该应用有故障或手机出现故障等。您的应用最终将是罪魁祸首。
– Bengongon97
19年7月17日在12:41
#4 楼
只需重写onBackPressed()方法即可。@Override
public void onBackPressed() { }
#5 楼
我正在使用它............. @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 楼
如果您想确保在Activity被杀死之前从某个服务器注销了android客户端应用程序->在其自己的线程上退出服务(无论如何,这就是您应该做的事情)。禁用后退按钮不会为您解决任何问题。例如,当用户接到电话时,您仍然会遇到相同的问题。接到电话后,您的活动在从网络上获得可靠答案之前被杀死的可能性几乎相同。
这就是为什么您应该让服务在其自己的线程上等待来自网络的答案,然后如果服务未成功,请使其重试。 android服务不仅在返回答案之前被杀死的可能性要小得多,而且如果真的在完成工作之前被杀死,它总是可以被AlarmManager恢复运行以再次尝试。
#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()
{
}
#8 楼
如果您使用的是FragmentActivity
。然后像这样首先在您的
Fragment
内部调用它。 /> public void callParentMethod(){
getActivity().onBackPressed();
}
#9 楼
只需使用以下代码:如果要禁用禁用,请不要使用super.OnBackPressed();@Override
public void onBackPressed() {
}
#10 楼
您可以在活动中覆盖onBackPressed()
方法,并删除对超类的调用。@Override
public void onBackPressed() {
//remove call to the super class
//super.onBackPressed();
}
#11 楼
如果要在注销时禁用应用程序,则可以弹出一个不可取消的对话框。#12 楼
您只需要覆盖后退按钮的方法即可。您可以根据需要将方法保留为空,以便在按“后退”按钮时什么也不会发生。请看下面的代码:@Override
public void onBackPressed()
{
// Your Code Here. Leave empty if you want nothing to happen on back press.
}
#13 楼
除了上述答案中的这两种方法之外。onBackPressed()(API级别5,Android 2.0)
onKeyDown()(API级别1,Android 1.0 )
您还可以像这样覆盖
dispatchKeyEvent()
(API级别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);
}
#14 楼
在android中禁用后退按钮@Override
public void onBackPressed() {
return;
}
#15 楼
对我来说,仅覆盖onBackPressed()
无效,但明确指出应该开始的活动有效:@Override
public void onBackPressed(){
Intent intent = new Intent(this, ActivityYouWanToGoBack.class);
startActivity(intent);
}
#16 楼
试试这个:@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
#17 楼
从super.onBackPressed()
移除public void onBackPressed()
效果很好。它已在android 9中进行了测试
评论
您能否更清楚地知道这个问题?如果要覆盖后退按钮的默认行为,请在此处参考此问题。 stackoverflow.com/questions/2000102/…除非您有充分的理由,否则请不要这样做,因为破坏预期的运营模式会严重损害整个平台
如果您必须处理一个笨拙的Samsung S4,该三星的S4后退按钮在手机边缘上是触敏的(不是物理的),它已经非常触敏,以至于手掌靠在侧面回去。
它违反了Android质量和设计指南UX-N1的角色。