关于android意图行动

时间:2012-04-16 06:25:23

标签: android android-intent

目前我正在努力工作;但是,我遇到了一些问题。

问题是,我有两个应用程序,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,onNewintent方法将在B中调用。是否有任何错误?如何在第二次将正确的数据传递给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方法..!

1 个答案:

答案 0 :(得分: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(...)
}