8

我有一个通知,它启动我的活动并使用意图的 putExtra() 函数传递消息。然后该消息在活动的 onCreate 函数中显示给用户。当应用程序由于方向更改而重新启动时,该消息会再次显示,因为它仍然在 Intent 的捆绑数据中。

如何删除多余的数据?

我尝试了以下方法:

Bundle bundle = getIntent().getExtras();
if (bundle.getBoolean("showMessage")) {
    // ... show message that is in bundle.getString("message")
    // remove message
    bundle.remove("showMessage");
}

但是方向改变后仍然会显示消息,看起来使用的意图不是我改变的那个,而是原来的那个。我发现的唯一解决方法是将 showMessage 额外保存在 o 中nSaveInstanceState()。还有其他方法吗?或者这是要走的路?

4

2 回答 2

21

(简单)解决方案是:

而不是打电话

bundle.remove("showMessage");

我现在用

getIntent().removeExtra("showMessage");

按预期工作。似乎 getIntent().getExtras() 返回一个副本,而不是一个引用。

于 2009-08-04T11:16:26.587 回答
10

你的onSaveInstanceState()方法是正确的答案,AFAIK。

于 2009-07-30T22:02:33.180 回答