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

如何删除额外数据?

我尝试了以下内容:

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

但是在方向改变后仍然会显示该消息,似乎所使用的意图不是我改变的意图,而是原始意图。我找到的唯一解决方法是将showMessage另外保存在o nSaveInstanceState()中。 还有另外一种方法吗?或者这是要走的路?

有帮助吗?

解决方案

(简单)解决方案是:

而不是打电话

bundle.remove("showMessage");

我现在用

getIntent().removeExtra("showMessage");

按预期工作。看起来像getIntent()。getExtras()返回一个副本,而不是引用。

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top