0

我正在製作一個存儲事物列表的應用程序。第一個活動以帶有「Empty」的TextView和操作欄中的+按鈕開始。有一個ListView設置爲GONE。我需要它,以便當我創建一個新條目時,空的TextView將消失,並且ListView將隨新條目一起顯示。如何讓Android活動恢復到最初創建的狀態?

我想這三種方式:

  1. 兩個不同的佈局。第一個是在onCreate函數中設置的TextView。 +按鈕打開一個對話框,當用戶點擊「創建」(肯定按鈕)時,它會檢查列表是否爲空。如果是這樣,它使用setContentView(id)加載ListView的新佈局。

  2. 一種佈局,「Empty」TextView的可見性設置爲可見,並且ListView設置爲消失。當單擊對話框的「創建」按鈕時,它會檢查列表是否爲空。如果是這樣,它會將ListView設置爲可見,並將TextView設置爲無效。

  3. 與第二種方法類似,只有ListView設置爲Visible,而TextView設置爲消失。在onCreate方法中,我將TextView設置爲可見,將ListView設置爲去。我在想如果它是由默認的佈局值,這將工作。

在所有這三種方法中,第一個活動恢復正常。問題出在用戶創建一個新項目後,該活動將打開一個包含項目信息的新活動。當我退出第二個活動時,第一個活動恢復正常,並顯示空的TextView和一個隱藏的ListView。

看來,當我從第一個活動返回時,onCreate方法會再次運行。有沒有辦法讓活動保持在後臺或者有什麼我失蹤的東西?

在此先感謝!

+0

發佈您的代碼,請 –

回答

1

您可以使用startActivityForResult開始新的活動。這會減少(但不是必須避免)你的活動將被破壞的可能性。

如果您確實想確認,請將活動狀態保存爲onSaveInstanceState並將其恢復爲onCreate

+0

我用'onSaveInstatnceState(捆綁了)'和'onRestoreInstantceStat e(Bundle in)'來維護活動狀態並且工作。謝謝! – Tylerc112

0

那麼你onCreate is再次致電時活動開始..所以,你可以使用一些邏輯和Sharedpreferences得到先前保存的值

使用此邏輯上完成按鈕

SharedPreferences sp = getSharedPreferences("session", MODE_PRIVATE); 
    Editor et = sp.edit(); 
    et.putBoolean("get_flag", true); 
    et.commit(); 

中上使用的onCreate這

SharedPreferences sp = getSharedPreferences("session", 
         MODE_PRIVATE); 
       boolean value = sp.getBoolean("get_flag", false); 
       if (value) { 
        Do Your Stuff 


       } else { 
        Do Your Stuff 
       }