1

我正在实现一个自定义启动器。我有两个活动:带有launchMode的活动A:singleInstance或singleTask,以及活动B。

活动 A 是主屏幕。有2种情况:

  • 如果我设置 Activity A 的启动模式:singleTask,我会从 Activity A 调用 Activity B(没关系)。在活动 B 中,如果我按 Home 键返回主屏幕,则屏幕为空(没有任何东西......)。
  • 如果我设置 Activity A 启动模式:singleInstance,我从 Activity A 调用 Activity B,然后它显示一个空白屏幕,然后转到 Activity B(在这种情况下,我按 Home 键返回主屏幕,它工作正常)。

那么,如何解决这个问题呢?我想:从活动A调用活动B,然后直接转到活动B,当我按Home键时,它返回主屏幕(活动A)。

4

2 回答 2

1

在活动 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);
    }
于 2014-01-13T03:20:09.743 回答
0

试试这个...从清单中删除launchmode属性,然后使用finish()方法从Activity A调用Activity B,如下所示:

finish();
            Intent intent=new Intent(getApplicationContext(),ActivityB.class);
            startActivity(intent);
于 2014-01-13T06:50:48.070 回答