我正在实现一个自定义启动器。我有两个活动:具有启动模式的活动 A:单实例或单任务,以及活动 B。
活动 A 是主屏幕。有2种情况:
- 如果我设置了活动 A 启动模式:单任务,我从活动 A 调用活动 B(没关系)。在活动B中,如果我按Home键返回主屏幕,则屏幕为空(没有任何内容...
- 如果我设置活动 A 启动模式:单实例,我从活动 A 调用活动 B,然后它显示一个空白屏幕,转到活动 B 后(在这种情况下,我按 Home 键到 bac 主屏幕,它工作正常)。
那么,如何解决这个问题呢?我想要:从活动A调用活动B,然后它直接转到活动B,当我按Home键时,它会返回主屏幕(活动A)。
在
活动 B 中,您可以将以下代码与后退按钮一起使用
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent a = new Intent(this,A.class);
a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(a);
return true;
}
return super.onKeyDown(keyCode, event);
}
如果您想使用主页键,请使用以下代码覆盖主页键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//yours code action
return true;
}
if(keyCode==KeyEvent.KEYCODE_BACK)
{
//yours code action
return true;
}
return super.onKeyDown(keyCode, event);
}
请您也可以尝试一下
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if ( (event.getKeyCode() == KeyEvent.KEYCODE_HOME) && isLock) {
//yours code
return true;
}
else
return super.dispatchKeyEvent(event);
}
试试这个...从清单中删除启动模式属性,然后从活动 A 调用活动 B使用 finish() 方法,如下所示:
finish();
Intent intent=new Intent(getApplicationContext(),ActivityB.class);
startActivity(intent);