提问人: 提问时间:7/30/2009 最后编辑:MysticMagicϡ 更新时间:1/17/2013 访问量:8078
在方向更改后重新创建活动之前更改意向捆绑数据
Change intent bundle data before an activity is re-created after orientation change
问:
我有一个通知,它启动了我的活动并使用 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()
答:
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
评论