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

Sar*_*els 3 java android callback sharedpreferences android-activity

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

我怎样才能做到这一点?

我想,我需要做一些CustomerPreferences.onSharedPreferenceChanged还有可能CustomerPreferences.onBackPressed,那么很可能处理东西CustomerActivity.

Mik*_* L. 8

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

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

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

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