Android上的活动开始清除值

时间:2011-11-21 09:24:10

标签: android int tabactivity

我从昨天开始陷入一个问题,我无法找到解决方案。我正在尝试将我的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 =0onResume()onRestart()等设置onStop()等等。它仍无效。

任何建议如何将此变量设置为0?

3 个答案:

答案 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)

您应该通过IntentstartActivityResult()以及onActivityResult();

在各个活动之间传递数据

使用TabGroupActivity时,这可能会非常棘手。

Here is a solution我发布了另一个问题,其中有一些相同的scanario。

答案 2 :(得分:1)

您将额外声明为最终变量,这意味着一旦您创建并将其分配给您之后无法更改它的内容。

因此,当您尝试重新分配并更改其值时,它基本上是不可能的,因为您的变量是最终的。