在方向更改后重新创建活动之前更改意向捆绑数据

Change intent bundle data before an activity is re-created after orientation change

提问人: 提问时间:7/30/2009 最后编辑:MysticMagicϡ 更新时间:1/17/2013 访问量:8078

问:

我有一个通知,它启动了我的活动并使用 intent 的 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()

Android-Intent 捆绑包

评论


答:

10赞 CommonsWare 7/31/2009 #1

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

21赞 8/4/2009 #2

(简单的)解决方案是:

而不是打电话

bundle.remove("showMessage");

我现在使用

getIntent().removeExtra("showMessage");

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

评论

0赞 Vicky Chijwani 6/10/2016
对不起,-1。 正如@CommonsWare所指出的那样,这是正确的方法。onSaveInstanceState