我有两个类,CustomerPreferencesextends 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中设置

08-06 13:50