Java 安卓-当偏好改变时,在活动中做些事情
我有两个类,Java 安卓-当偏好改变时,在活动中做些事情,java,android,android-activity,callback,sharedpreferences,Java,Android,Android Activity,Callback,Sharedpreferences,我有两个类,CustomerPreferences它扩展了PreferenceActivity在共享PreferenceChangeListener上实现的和CustomerActivity它扩展了Activity。在CustomerActivity中,我计算了一些值。在CustomerPreferences中,我要监视一个特定的ListPreference。当用户输入CustomerPreferences(通过CustomerActivity上的菜单选项完成)并更改ListPreference
CustomerPreferences
它扩展了PreferenceActivity在共享PreferenceChangeListener上实现的和CustomerActivity
它扩展了Activity
。在CustomerActivity
中,我计算了一些值。在CustomerPreferences
中,我要监视一个特定的ListPreference
。当用户输入CustomerPreferences
(通过CustomerActivity
上的菜单选项完成)并更改ListPreference
,然后点击后退按钮并返回到CustomerActivity
,我想根据新的首选项设置重新计算我的值。如果用户进入CustomerPreferences
,但没有更改ListPreference
的值,我不想在返回到CustomerActivity
时重新计算任何内容
我该怎么做
我想我需要在
CustomerPreferences.onSharedPreferenceChanged
以及CustomerPreferences.onBackPressed
,然后可能需要在CustomerActivity
中处理一些事情。您可以处理CustomerActivity的onResume()方法中的更改。因此,在用户按下back键后,在onResume()中,检查您的首选项并重新计算您的值,并根据计算出的值更改GUI表示形式
当然,有时这是不必要的,因为用户可能没有更改任何内容。只要你的计算不是太重,这就不应该引起关注
您可以做的另一件事是在共享首选项(如preferencesChanged)中设置一个布尔值,它将在CustomerPreferences.onSharedPreferenceChanged中设置为true。然后检查onResume()中的首选项更改。如果为真,请重新计算。否则什么也不做
另一个选项是使用startActivityForResult()启动结果的首选项活动。然后在CustomerActivity的onActivityResult()中重新计算。结果值将在CustomerPreferences中设置。onSharedPreferenceChanged在
onResume
中执行此操作效果良好:谢谢,我是Android开发新手,所以我不知道该找什么。我就知道会有这样的事!在阅读本文之前,我使用了onResume()
,但我认为startActivityForResult()
更好,因为调用onResume()
可能有许多其他原因,而不是退出首选项。