我有两个班级CustomerPreferences
,extends PreferenceActivity implements OnSharedPreferenceChangeListener
和CustomerActivity
extends Activity
。在CustomerActivity
中,我计算了一些值。在CustomerPreferences
中,我想要监控一个特定的ListPreference
。当用户输入CustomerPreferences
时 - 通过CustomerActivity
上的菜单选项完成 - 并更改ListPreference
,然后点击后退按钮并返回CustomerActivity
,我想要根据新的首选项设置重新计算我的值。如果用户进入CustomerPreferences
但未更改ListPreference
的值,我不想在返回CustomerActivity
时重新计算任何内容。
我该怎么做?
我想我需要在CustomerPreferences.onSharedPreferenceChanged
以及CustomerPreferences.onBackPressed
中执行某些操作,然后可能会处理CustomerActivity
中的内容。
答案 0 :(得分:8)
您可以在CustomerActivity的onResume()方法中处理更改。因此,在用户按下之后,在onResume()中,浏览您的首选项并重新计算您的值并根据计算的值更改您的GUI表示。
当然,有时这是不必要的,因为用户可能没有改变任何东西。只要你的计算不太重,就不应该引起关注。
您可以做的另一件事是在共享首选项中设置一个布尔值,例如preferencesChanged,它将在CustomerPreferences.onSharedPreferenceChanged中设置为true。然后在onResume()中检查preferencesChanged。如果是真的你做重新计算。否则什么都不做。
另一种选择是使用startActivityForResult()为结果启动首选项活动。然后在CustomerActivity中的onActivityResult()中重新计算。结果值将在CustomerPreferences.onSharedPreferenceChanged
中设置