2012-05-13 29 views
0

我在Android應用程序中有一個菜單,當我點擊其中一個按鈕來啓動一個新的活動時,我希望實例變量保持它們的值,即使我回到菜單並重新開始。 這是我已經試過:去Android中的意圖/活動的相同「實例」

public void onClick(View v) { 

      Bundle b = new Bundle(); 
      b.putBoolean("isFav",false); 
      centralsIntent = new Intent("kth.blod.CENTRALS"); 
      centralsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
      centralsIntent.putExtras(b); 

      startActivity(centralsIntent); 
     } 

而且在清單:

android:launchMode="singleTop" 
+0

嘗試在你的電話回你的菜單活動這一意圖:FLAG_ACTIVITY_CLEAR_TOP。如果你這樣做,如果它仍然在運行,它不會被重新實例化。 – Ostkontentitan

回答

0

我想共享偏好都保持值的跟蹤你已經在你的應用程序的一部分設置的最簡單方法您希望保存並可能在從應用程序的另一部分返回時進行修改。看到這個鏈接Shared Preferences。請參閱this link以瞭解如何實施它們。祝你好運!

+0

我想保存的值實際上是一個類的實例,包含對象列表。這些對象充滿了在線內容,我不希望每次有人返回菜單時都需要再次獲取它。共享首選項似乎只傳遞字符串和整數。 – Rickard

0

我很困惑你的問題。當你說'我有菜單'時,你的意思是主要活動(或第一個活動)是菜單嗎?如果是這樣,用戶可以從菜單中進行選擇,並且您可以開始一個新的活動,然後在之上出現菜單活動。只要您不在菜單上調用finish(),它就不會消失(在正常情況下),並且當用戶返回時,所有實例變量仍將包含用戶啓動新活動時所擁有的任何變量。此外,你不應該需要launchMode ='singleTop'因爲這是標準的默認行爲。

或者,也許我不完全理解你的問題是什麼?

+0

是的,菜單是主要活動,當用戶從我的內容活動返回時,用戶將返回菜單活動。但是,當我再次啓動內容活動時,THAT活動中的信息丟失。這是我希望在內容活動中保留的信息。所以我想開始內容活動的同一個「實例」。 – Rickard

+0

在內容活動中,你需要做的是讓它在某處存儲它的狀態。我同意@ thomas.cloud共享偏好是一個合理的位置來做到這一點。或者你可以將這些東西寫入文件。您需要將要保存的對象序列化爲適合您要用來存儲它們的方法的字節流或字符串。 –

+0

智能手機上的操作不會很耗時嗎?主要是我有一個班級3列表,每個5-10個對象。在每個對象中有~10個字符串。如果問題是愚蠢的,請原諒我,但我以前沒有嘗試過。 是否可以將整個類的實例作爲共享首選項傳遞? – Rickard