2013-05-14 44 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