【发布时间】:2023-03-30 16:55:01
【问题描述】:
我编写了一个带有 3 个标签的应用。每个选项卡都有相同的列表视图和不同的数据源。我在 tabhost 活动中设置了 SharedPreferences,但我将我的 onSharedPreferenceChangeListener 方法放在了我的 listactivity 中。当我更改首选项时,我的侦听器会被调用并更新我的数据库。这一切都在工作。但是,如果我更改选项卡 1 中的数据,它会调用我的侦听器一次。如果我更改选项卡 2 的数据,它会调用两次,如果我更改选项卡 3 中的数据,它会调用三次。知道为什么它会这样工作吗?我想我可以在我的 listactivity 中设置我的共享首选项,这可能会避免这个问题,但我很好奇为什么我的监听器在不同的选项卡中会被多次调用。
西兰花
【问题讨论】:
-
经过更多测试后,似乎如果您对所有 3 个选项卡重复使用相同的活动,它将为每个选项卡调用一次 onSharedPreferenceChangeListener,直到您正在查看的选项卡。因此,如果我正在查看选项卡 3 并且我更改了一些首选项。它调用我的 onSharedPreferenceChangeListener 3 次。非常令人沮丧。我怎样才能让它只调用一次?
-
事实证明,即使您在 listactivity 中设置了 sharedprefs,如果您没有查看第一个选项卡,它仍然会被多次调用。
标签: android listactivity android-tabhost sharedpreferences