我从昨天开始陷入一个问题,我无法找到解决方案。我正在尝试将我的tabhost中的子活动中的一个variable
设置为0
。基本上我有这种情况:
Activity A -- sends extra "something" to activity B (B is getting it)
Activity B -- starts Activity C
Activity C -- onButton click sends extra "something" to activity B and finish()
这一切都发生在First标签中。 问题是当我更改选项卡并返回活动A而不是B时,额外的“某事”仍然保存活动C发送的值,无论我是否从活动A发送它。这是一个示例代码:< / p>
活动A - 开始B:
if (ownedCards != 0) {
ownedStampii.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent previewMessage = new Intent(getParent(), OwnedStampii.class);
TabGroupActivity parentActivity = (TabGroupActivity)getParent();
previewMessage.putExtra("collection_id", collId);
previewMessage.putExtra("SOMETHING", 0); // this is what I'm trying to se to 0
parentActivity.startChildActivity("OwnedStampii", previewMessage);
}
});
}
这是我在活动B中读取额外内容的方式:
final int extra = getParent().getIntent().getIntExtra("SOMETHING", 0);
Log.e("", "extra : " + extra);
这是我从活动C发送额外内容的方式:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getParent().getIntent();
intent.putExtra("SOMETHING", objectID); // objectId of category which will sort the data
getParent().setResult(RESULT_OK, intent);
finish();
}
});
我尝试在int extra =0
,onResume()
,onRestart()
等设置onStop()
等等。它仍无效。
任何建议如何将此变量设置为0?
答案 0 :(得分:2)
我认为您正在重复使用活动C中的现有意图并将另一个 SOMETHING置于同一意图中。尝试再次调用之前调用intent.removeExtra("SOMETHING");
。或者从C到B发送 new Intent
。
Intent intent = getParent().getIntent();
intent.removeExtra("SOMETHING"); // Hox! Add this.
intent.putExtra("SOMETHING", objectID);
getParent().setResult(RESULT_OK, intent);
finish();
答案 1 :(得分:1)
您应该通过Intent
和startActivityResult()
以及onActivityResult();
使用TabGroupActivity
时,这可能会非常棘手。
Here is a solution我发布了另一个问题,其中有一些相同的scanario。
答案 2 :(得分:1)
您将额外声明为最终变量,这意味着一旦您创建并将其分配给您之后无法更改它的内容。
因此,当您尝试重新分配并更改其值时,它基本上是不可能的,因为您的变量是最终的。