用户关闭特定首选项屏幕时运行一些代码?

时间:2012-06-02 19:27:28

标签: android sharedpreferences

有没有办法找出用户关闭特定偏好设置屏幕的时间?当用户在我的某个偏好设置屏幕中更改了偏好设置时,我需要进行一些更新。不是当用户点击实际的复选框时,而是当他们按下后退按钮并完成编辑首选项时。

到目前为止,我所能找到的是我可以覆盖我的PreferenceActivity的onPause()事件,这似乎发生在用户关闭首选项时。它有效,但我不确定这是解决问题的最佳方法。有什么建议吗?

修改

我无法弄清楚如何从PreferenceActivity中实际调用我的主要活动的方法。尝试玩putExtra()和各种各样的东西。最终我想 - 为什么不完全相反?所以我在主活动中实现了onResume()方法。当用户关闭首选项时,可以很好地处理这些内容,而且每次我恢复应用程序时都可以运行我的更新方法。

3 个答案:

答案 0 :(得分:5)

好吧,我一直在寻找这个问题的解决方案,持续数周至2分钟前...... 我想我找到了方法。

Preference myPrefScreen = findPreference("myPrefScreen");
    myPrefScreen 
            .setOnPreferenceClickListener(new OnPreferenceClickListener() {

                @Override
                public boolean onPreferenceClick(Preference prefScreen) {
                    // TODO Auto-generated method stub

                    Dialog prefScreenDialog = ((PreferenceScreen) prefScreen)
                            .getDialog();
                    prefScreenDialog
                            .setOnDismissListener(new OnDismissListener() {

                                @Override
                                public void onDismiss(DialogInterface arg0) {
                                    // TODO Auto-generated method stub


                                    ///HERE YOU CAN EXECUTE WHATEVER YOU WANT... 
                                }
                            });
                    return false;
                }
            });

只有在屏幕上点击了PreferenceScreen条目并且显示了带有首选项子项的新窗口时,才需要OnPreferenceClickListener来正确实例化生成的PreferenceScreen对话框。否则你总是getDialog()返回null,并且无法将OnDismissListener附加到它。

设置OnDismissListener后,技巧就完成!!

我希望这可以提供帮助。

快乐编码给所有人!!

答案 1 :(得分:0)

onPause是处理和更新的最佳位置。

答案 2 :(得分:0)

这是最好的方法:重写onPause()方法。它是在您的活动离开前景之前调用的。