2011-11-21 72 views
0

我被困在昨天的一個問題中,我無法找到解決方案。我試圖將一個variable設置爲我的tabhost中的子活動,並將其設置爲0。基本上我有這種情況:活動啓動時的Android清除值

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() 

這一切都發生在第一個選項卡。 問題是,當我更改選項卡並返回到活動A而不是B時,無論是否從活動A發送它,額外的「東西」仍保存活動C發送的值。以下是一個示例代碼:

活動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(); 
} 
}); 

我試着在onResume(),onRestart(), onStop() ..上試着設置int extra =0,等等它仍然沒有工作。

任何建議如何將此變量設置爲0?

+0

我們需要看到更多的代碼來幫助你。特別是活動B的'onCreate()',然後打開活動C和'onActivityResult()'的函數。然後...你在'onCreate()'或者'onActivityResult()'中讀了「extra」嗎?你的問題也很令人困惑......這是在步行活動時重現問題的順序:A→B→C→B→A→B→你是否總是通過點擊按鈕來改變活動,或者你是否在某個時候回退?在哪一點? –

回答

1

你應該同時使用TabGroupActivity通過IntentstartActivityResult()onActivityResult();

傳遞活動之間的數據,這可能會非常棘手。

Here is a solution我發佈到另一個問題有不知何故相同scanario。

1

您正在聲明額外作爲最終變量,這意味着一旦您創建並將其分配給某些事後不能更改它。

所以,當你試圖重新分配和改變它的價值時,基本上不可能導致你的變量是最終的。

+0

如果我將它聲明爲全局變量,結果是相同的。 –

2

我認爲你正在重新使用活動C中的現有意圖,並將另一個 SOMETHING放入同一個意圖。在重新放入之前,請嘗試撥打intent.removeExtra("SOMETHING");。或者由C發送Intent到B.

Intent intent = getParent().getIntent(); 
intent.removeExtra("SOMETHING"); // Hox! Add this. 
intent.putExtra("SOMETHING", objectID); 
getParent().setResult(RESULT_OK, intent); 
finish(); 
+0

如果這不起作用,那麼向我們展示如果您正在使用它,則啓動C和B的'onActivityResult()'的代碼。 –