Android 安卓和后退按钮
我的后退按钮有问题。他不工作。当我从第一个活动转到第二个活动,从第二个活动转到第三个活动时,后退按钮不想工作。我用过:Android 安卓和后退按钮,android,Android,我的后退按钮有问题。他不工作。当我从第一个活动转到第二个活动,从第二个活动转到第三个活动时,后退按钮不想工作。我用过: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(true); Log.v("Co1s", "Cos1"); return true
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
Log.v("Co1s", "Cos1");
return true;
}
return super.onKeyDown(keyCode, event);
}
但当我按下按钮时,我只得到:
05-23 10:45:57.863:W/KeyCharacterMap(238):无法打开keycharmap文件
05-23 10:45:57.863:W/KeyCharacterMap(238):加载keycharmap时出错
文件'/system/usr/keychars/pm8058-keypad.kcm.bin'。
硬件键盘0.devname='pm8058-keypad'05-23 10:45:57.863:
W/KeyCharacterMap(238):使用默认的keymap:
/系统/usr/keychars/qwerty.kcm.bin
此函数中的此日志不会显示在日志中。为什么?
编辑:
acrivity nr1:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.services_description);
back_button = (Button) findViewById(R.id.service_back_button);
back_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
intent = new Intent(services_description.this, service.class);
TabActivityGroup parentActivity = (TabActivityGroup)getParent();
parentActivity.startChildActivity("menu_activity", intent);
finish();
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.v("Co1s", "Cos1");
}
return super.onKeyDown(keyCode, event);
}
第二:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.service);
title = (TextView) findViewById(R.id.serviceTitle);
description = (TextView) findViewById(R.id.serviceDescription);
nextPage = (ImageView) findViewById(R.id.serviceNextPage);
back_button = (Button) findViewById(R.id.service_back_button);
nextPage.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
intent = new Intent(service.this, services_description.class);
TabActivityGroup parentActivity = (TabActivityGroup)getParent();
parentActivity.startChildActivity("menu_activity", intent);
}
});
back_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
finish();
}
});
}
@Override
public void onBackPressed() {
Log.v("Cos", "Cos");
finish();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
Log.v("Co1s", "Cos1");
return true;
}
return super.onKeyDown(keyCode, event);
}
你不必做任何事情来让后退按钮工作。只要删除整个块
if(keyCode==KeyEvent.keyCode\u BACK)
etc,就可以了
如果由于某种原因需要在单击“后退”按钮时登录,我认为您可以这样做:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.v("Co1s", "Cos1");
}
return super.onKeyDown(keyCode, event);
}
重要的是,您将单击按钮的“处理”传递给覆盖的方法,并让Android操作系统本身处理返回到上一个活动的操作。您可以在活动中覆盖,而不是覆盖
onKeyDown()
您可以通过方法onBackPressed()覆盖后退按钮
您还可以使用此方法中的意图
移动应用程序中的任何活动。您可以从这个链接获得更多信息。这将为您提供我们如何做到这一点这不起作用。我没有任何日志。只有那个警告,但只有在我第一次按下按钮时。@edi233:但您的后退按钮是否按预期工作,即返回到上一个活动?我想这是这里的主要部分。。。你说你没有得到任何日志条目:你试过在你的onKeyDown
方法中设置断点吗?在调试模式下运行时会发生什么?keyCode
等的值是多少?你需要给我们更多的信息…不。还是不行。我想使用此日志查看当我单击“日志显示”按钮时是否显示日志。调试模式在我单击时未启动。我不知道为什么。在其他项目中,您的方式工作得很好,但在这种情况下不行。@edi233:您能详细说明一下“它仍然不工作”的意思吗?后退按钮应该“开箱即用”,而不需要添加任何关键事件处理程序。如果完全删除onKeyDown
方法,会发生什么情况,然后是否返回到上一个活动?你应该发布更多的代码,最好是一个完整的例子来重现这个问题。它仍然不起作用,这意味着当我点击应用程序时,不会返回到以前的活动。我添加了一些代码来查看如何开始新的活动。也许问题出在你们两个中的哪一个后退按钮不起作用了?如果您的第一个活动是在后退按钮上附加一个onClick
侦听器,同时覆盖onKeyDown
。在第二个活动中,您同时覆盖了onBackPressed
和onKeyDown
。这一切似乎有点可疑。。。看起来你在做很多不同的事情,却不知道自己在做什么,所以我的建议是:去掉所有的“绒毛”,从一个尽可能简单的例子开始。让back按钮正常工作,然后开始同时添加一个事件处理程序,以使日志记录也正常工作。