2

我编写了一个带有 3 个选项卡的应用程序。每个选项卡都有相同的列表视图和不同的数据源。我在 tabhost 活动中设置了 SharedPreferences,但我将我的 onSharedPreferenceChangeListener 方法放在了我的 listactivity 中。当我更改首选项时,我的侦听器会被调用并更新我的数据库。这一切都在工作。但是,如果我更改选项卡 1 中的数据,它会调用我的侦听器一次。如果我更改选项卡 2 的数据,它会调用两次,如果我更改选项卡 3 中的数据,它会调用三次。知道为什么它会这样工作吗?我想我可以在我的列表活动中设置我的共享首选项,这可能会避免这个问题,但我很好奇为什么我的监听器在不同的选项卡中被多次调用。

西兰花

4

1 回答 1

3

您已将 unregisterOnSharedPreferenceChangeListener() 放在 onDestroy() 中,并且不会在所有活动重新启动时调用它。

结论是这样做的正确方法是将 registerOnSharedPreferenceChangeListener() 和 unregisterOnSharedPreferenceChangeListener() 分别放在 onResume() 和 onPause() 中。

于 2012-03-15T04:32:08.533 回答