0

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

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

编辑

我不知道如何从 PreferenceActivity 中实际调用我的主要活动的方法。尝试使用 putExtra() 和各种东西。最终我想——为什么不做完全相反的事情呢?因此,我在主要活动中实现了 onResume() 方法。当用户关闭首选项时,它非常适合做一些事情,而且我可以忍受每次我恢复我的应用程序时我的更新方法都会运行的事实。

4

3 回答 3

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;
                }
            });

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

一旦你设置了 OnDismissListener,技巧就完成了!!

我希望这会有所帮助。

祝大家编码愉快!!

于 2013-05-15T07:17:16.790 回答
0

onPause是处理和更新的正确位置。

于 2012-06-02T19:35:57.720 回答
0

这是最好的方法:覆盖 onPause() 方法。它在您的活动离开前台之前被调用。

于 2012-06-02T19:37:21.760 回答