【问题标题】:Android - do something in activity when preferences changeAndroid - 当偏好改变时做一些事情
【发布时间】:2011-12-17 15:07:08
【问题描述】:

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

我该怎么做?

我想我需要在CustomerPreferences.onSharedPreferenceChangedCustomerPreferences.onBackPressed 中做一些事情,然后可能在CustomerActivity 中处理一些事情。

【问题讨论】:

    标签: java android android-activity callback sharedpreferences


    【解决方案1】:

    您可以在 CustomerActivity 的 onResume() 方法中处理更改。因此,在用户按下后,在 onResume() 中,检查您的偏好并重新计算您的值并根据计算的值更改您的 GUI 表示。

    当然,有时这是不必要的,因为用户可能没有更改任何内容。只要您的计算不太繁重,就不必担心。

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

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

    【讨论】:

    • onResume 中执行此操作效果很好。 :) 谢谢,我是 Android 开发的新手,所以我不知道要寻找什么。不过,我知道会有这样的事情!
    • 在阅读这篇文章之前,我使用了onResume(),但我认为startActivityForResult() 更好,因为除了退出首选项之外,可能会出于许多其他原因调用onResume()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多