2

3 つのタブを持つアプリを作成しました。各タブには、データ ソースが異なる同じリスト ビューがあります。タブホスト アクティビティで SharedPreferences をセットアップしましたが、onSharedPreferenceChangeListener メソッドをリスト アクティビティに配置しました。設定を変更すると、リスナーが呼び出され、データベースが更新されます。これはすべて機能しています。ただし、タブ 1 のデータを変更すると、リスナーが 1 回呼び出されます。タブ 2 のデータを変更すると 2 回呼び出され、タブ 3 のデータを変更すると 3 回呼び出されます。なぜこのように機能するのか考えていますか?リストアクティビティで共有設定をセットアップでき、それで問題を回避できると思いますが、別のタブにある場合にリスナーが複数回呼び出されるのはなぜですか。

ブロッコリー

4

1 に答える 1

3

unregisterOnSharedPreferenceChangeListener() を onDestroy() に配置しましたが、すべてのアクティビティの再起動で呼び出されるわけではありません。

結論は、これを行う適切な方法は、それぞれ onResume() と onPause() に registerOnSharedPreferenceChangeListener() と unregisterOnSharedPreferenceChangeListener() を配置することです。

于 2012-03-15T04:32:08.533 に答える