0

目前我有意向工作;但是,我遇到了一些问题。

问题是,我有两个应用程序,A 和 B。B 的午餐模式是 android:launchMode="singleTop"。

现在,我想将一个意图从 A 传递到 B,例如“sdcard/Android”(目录路径)。之后,A 将完成,B 将被创建/恢复/onNewintent。第一次,B 会收到一个意图字符串“sdcard/Android”,这正是我想要的。

然后我按下启动器的主页​​按钮并再次打开A,然后将一个新数据“sdcard/Music”传递给B。但是,问题发生了,B不会得到字符串“sdcard/Music”,而是, B 的意图数据仍然是“sdcard/Android”。

我预计A第二次将数据传递给B时,会在B中调用onNewintent方法。有什么错误吗?如何在第二次将正确的数据传递给 B?

@Override
public void onCreate(Bundle savedInstanceState) {
    onNewIntent(getIntent());
}

@Override
public void onNewIntent(Intent intent)
{
    Log.i("TAG", intent.getStringExtra("path"));
}

我知道我应该覆盖 onNewIntent。第一次,B 会进入 onCreate 方法。第二次,我希望它进入 onNewIntent 方法;但是,它进入了 onResumed 方法..!

4

1 回答 1

2

该方法onNewIntent(...)不是第一次为您Activity B调用,它只会在第二次和更多次Activity B启动时调用。

Intent您可以通过执行以下操作来“重新编写”原件......

@Override
protected void onNewIntent(Intent intent) {
    setIntent(intent);
}

@Override
protected void onResume() {
    super.onResume();
    handleIntent(getIntent());
}

private void handleIntent(Intent intent) {
    // The intent parameter here will be the original `Intent` the first
    // time Activity B is started. It will be the new Intent after that
    // as onNewIntent(...) re-writes it with the call to setIntent(...)
}
于 2012-04-16T06:38:49.847 回答