2013-05-14 31 views
0

在我的應用程序中,當按下返回按鈕返回上一個活動時,變量仍然設置幷包含值,我的問題是如何重置任何活動中的所有變量,以便在首次啓動時執行操作?如何清理活動中的變量?

如果這有幫助,我有一個包含三個活動的應用程序; 在活動1:我把Bundle.putExtras()一些字符串發送到下一個活動... 在活動2:也把一些字符串捆綁,並將其發送到活動3 ...

+1

哪種變量..發佈一些代碼 – stinepike 2013-05-14 16:59:12

+0

'onActivityResult'清除全局變量(再次設置爲默認值)。 – Doomsknight 2013-05-14 17:00:56

+0

上午有不同的變量,字符串 - ArrayList - 線程 - 處理程序 - 詮釋... – spac3hit 2013-05-14 17:06:30

回答

2

你的非靜態變量將當你從你的Activity回來時被清除並重置爲默認值。

您的靜態變量可以在您的ActivityonDestroy()方法中重置,儘管這樣做首先會破壞靜態變量的目的。

編輯:我看到你在說的是前面的Activity。在這種情況下,只需覆蓋您之前的ActivityonResume()即可清除變量,但我不明白爲什麼您需要這樣做。

+1

這根本不是真的。只有在重置它們時纔會重置它們。並且靜態變量進入它的位置 – Doomsknight 2013-05-14 17:04:03

+0

@Doomsknight,我認爲他是在討論當前活動的變量,當他按下Back時,而不是前一個。在這種情況下,擁有靜態變量值得一提是有道理的。 – 2013-05-14 17:06:11

+0

好的。然而'onResume()'會在屏幕旋轉時觸發,或隱藏然後恢復應用程序。導致數據在意外時被清除。如前所述,'onActivityResult'是最好的方法。只是需要考慮。 – Doomsknight 2013-05-14 17:09:03

-1

只是初始化onResume()方法的所有變量。這樣,每當您的活動開始時,您的數據就會被清除。

0

您可以finish()當前活動後call您的second activity。這將清除您前活動中的變量。

+1

我不認爲這是最好的解決方案,當第二個活動開始時,前一個活動正在通過'finish();'完成,現在當按下後退按鈕時,它不會返回到之前的活動,因爲它已完成,而是關閉應用程序。 – spac3hit 2013-05-14 17:34:11

+0

您可以重寫第二個活動的onBackPressed()方法,並且可以調用第一個活動。 – ACengiz 2013-05-14 17:54:11