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

Mag*_*s W 0 android sharedpreferences

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

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

编辑

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

小智 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;
                }
            });
Run Code Online (Sandbox Code Playgroud)

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

一旦你设置OnDismissListener就完成了诀窍!!

我希望这可以有所帮助.

祝所有人快乐!