我想完成主页按钮上的活动单击。 我有下面的代码,但没有得到它的点击事件。但仍然没有得到clickevent
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_HOME:
System.out.println("Home clicked....");
return true;
}
}
return super.onKeyDown(keyCode, event);
}
答案 0 :(得分:13)
按下主页按钮时,会在您的活动中调用 onStop 方法。因此,您可以在 onStop 方法中添加finish();
来销毁您的活动。最终将引发 onDestroy 方法以确认您的活动已完成。
答案 1 :(得分:6)
您无法处理“主页”按钮。
您可以尝试覆盖其中一些方法:onStop,onUserLeaveHint
你确定你需要这样做吗? 如果您可以通过onPause / onSaveInstanceState保存当前状态并在以后恢复它,则OS应该能够处理Activity的生命周期并在需要时完成它。 你能告诉我们是什么阻止你这样做吗? :)
答案 2 :(得分:2)
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
moveTaskToBack(false);
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 3 :(得分:1)
在onUserLeaveHint()
bez上完成你的活动当用户按下主页键时调用此方法,所以只需覆盖此方法并在此方法中调用finish()。
答案 4 :(得分:0)
一旦主页按钮活动不再是主要的活动运行活动,你可以将finish()放在onPauseMethod中,并进入onPause方法,它将停止该活动。
答案 5 :(得分:0)
完成活动,当主页按钮单击时..它的工作对我来说很完美..
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_HOME)) {
Log.v("hari", "KEYCODE_HOME");
onUserLeaveHint();
return true;
}
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
return true;
}
if ((keyCode == KeyEvent.KEYCODE_MENU)) {
return true;
}
return false;
}
public void onUserLeaveHint() { // this only executes when Home is selected.
super.onUserLeaveHint();
if (!isFinishing()) {
Log.v("hari", "if condition working");
finish();
}
}
但使用此代码时有时后退按钮无效...
答案 6 :(得分:0)
当活动从主屏幕/桌面上的图标显示到前台时,您可以完成活动。见这里:https://groups.google.com/forum/#!topic/android-developers/D9CyrSzIm5c
基本上,它会将 android:clearTaskOnLaunch =“true”添加到您的活动中。
答案 7 :(得分:-2)
看到这个
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_HOME:
finish();
System.out.println("Home clicked....");
return true;
}
}
return super.onKeyDown(keyCode, event);
}