2015-05-06 137 views
0

我有兩項活動Home.javaProfile.java獲取活動重新啓動時舊活動的數據

當用戶在Home.java的ListView中點擊某人的個人資料時,我獲得該用戶的用戶名,將其存儲在靜態變量Home.usernameProfile中,然後轉到Profile.java,我使用靜態變量Home.usernameProfile加載點擊用戶名的數據。

從配置文件中,您可以轉到其他配置文件(開始新的Profile.java活動),然後爲新的配置文件設置Home.usernameProfile

問題是,如果我從第二個人資料中Home.usernameProfile變量返回到第一個人資料仍然會有用戶名的第二個配置文件,我需要的用戶名的第一個配置文件,因爲我的個人資料做的事情,需要Home.usernameProfile變量。

我試圖在Profile.java創建TextView的,在一個TextView店Home.usernameProfile變量的值,並返回到Home.usernameProfile使用public void onRestart() { super.onRestart(); ...}活動重新啓動,但TextView的返回一些其他的價值。

有誰知道從其他配置文件返回時如何獲取當前顯示的配置文件的用戶名?

+0

你如何從一個配置文件導航到下一個配置文件?你打開一個新的活動,還是隻是替換當前數據? – EpicPandaForce

+0

在Home.usernameProfile變量中,我存儲新的用戶名,然後開始一個新的活動。 – user3051755

+0

你可以發佈代碼 –

回答

2

您在錯誤的地方使用了靜態變量,不這樣做。靜態變量是類級別的變量,它用於爲該類始終有單個(通用)值。

閱讀關於這裏static關鍵字: - Official Doc

改變靜態變量的值將反映在所有的地方變量的值。 (想想靜態的,因爲這將只有一個值,這個值將是最後一次分配的值更改值將覆蓋舊值。)

問題: -

當你開始Profile.java這裏發生的事情並在Home.usernameProfile中設置值,但如果選擇其他配置文件,它將再次使用新值覆蓋Home.usernameProfile值。由於此字段在您的方案中是靜態的,因此它將在所有地方具有此新值,因爲您已故意改變它。 (這就是靜態的作品。)

對於解決方案: -

當從Home.java來Profile.java通過使用意圖數據。 Pass data from one activity to other.並從Home.java中移除靜態字段,您現在不需要它。

現在在Profile.java文件中,您可以輕鬆獲取傳遞的數據並使用它。

希望這會有所幫助,

謝謝。

相關問題