我有两个类,CustomerPreferences
和extends PreferenceActivity implements OnSharedPreferenceChangeListener
。在CustomerActivity
中,我计算了一些值。在extends Activity
中,有一个我想监视的特定CustomerActivity
。当用户输入CustomerPreferences
(通过ListPreference
上的菜单选项完成)并更改CustomerPreferences
,然后单击“后退”按钮并返回CustomerActivity
时,我想根据新的首选项设置重新计算我的值。如果用户输入ListPreference
但不更改CustomerActivity
的值,则我不希望在返回CustomerPreferences
时重新计算任何内容。
我怎样才能做到这一点?
我认为我需要在ListPreference
以及CustomerActivity
中做一些事情,然后可能在CustomerPreferences.onSharedPreferenceChanged
中处理一些事情。
最佳答案
您可以处理CustomerActivity的onResume()方法中的更改。因此,在用户按下后,在onResume()中,遍历您的首选项并重新计算您的值,并根据计算出的值更改您的GUI表示形式。
当然,有时候这是不必要的,因为用户可能没有进行任何更改。只要您的计算不太繁琐,就不必担心。
您可以做的另一件事是在共享的首选项(例如preferencesChanged)中设置一个布尔值,该值将在CustomerPreferences.onSharedPreferenceChanged中设置为true。然后检查onResume()中的preferencesChanged。如果为true,请重新计算。否则什么都不做。
另一个选项是使用startActivityForResult()启动结果的首选项 Activity 。然后在CustomerActivity中的onActivityResult()中进行重新计算。结果值将在CustomerPreferences.onSharedPreferenceChanged中设置