Android - 在首选项更改时执行某些操作

时间:2011-10-28 21:53:07

标签: java android android-activity callback sharedpreferences

我有两个班级CustomerPreferencesextends PreferenceActivity implements OnSharedPreferenceChangeListenerCustomerActivity extends Activity。在CustomerActivity中,我计算了一些值。在CustomerPreferences中,我想要监控一个特定的ListPreference。当用户输入CustomerPreferences时 - 通过CustomerActivity上的菜单选项完成 - 并更改ListPreference,然后点击后退按钮并返回CustomerActivity,我想要根据新的首选项设置重新计算我的值。如果用户进入CustomerPreferences但未更改ListPreference的值,我不想在返回CustomerActivity时重新计算任何内容。

我该怎么做?

我想我需要在CustomerPreferences.onSharedPreferenceChanged以及CustomerPreferences.onBackPressed中执行某些操作,然后可能会处理CustomerActivity中的内容。

1 个答案:

答案 0 :(得分:8)

您可以在CustomerActivity的onResume()方法中处理更改。因此,在用户按下之后,在onResume()中,浏览您的首选项并重新计算您的值并根据计算的值更改您的GUI表示。

当然,有时这是不必要的,因为用户可能没有改变任何东西。只要你的计算不太重,就不应该引起关注。

您可以做的另一件事是在共享首选项中设置一个布尔值,例如preferencesChanged,它将在CustomerPreferences.onSharedPreferenceChanged中设置为true。然后在onResume()中检查preferencesChanged。如果是真的你做重新计算。否则什么都不做。

另一种选择是使用startActivityForResult()为结果启动首选项活动。然后在CustomerActivity中的onActivityResult()中重新计算。结果值将在CustomerPreferences.onSharedPreferenceChanged

中设置