有没有办法找出用户关闭特定偏好设置屏幕的时间?当用户在我的某个偏好设置屏幕中更改了偏好设置时,我需要进行一些更新。不是当用户点击实际的复选框时,而是当他们按下后退按钮并完成编辑首选项时。
到目前为止,我所能找到的是我可以覆盖我的PreferenceActivity的onPause()事件,这似乎发生在用户关闭首选项时。它有效,但我不确定这是解决问题的最佳方法。有什么建议吗?
修改
我无法弄清楚如何从PreferenceActivity中实际调用我的主要活动的方法。尝试玩putExtra()和各种各样的东西。最终我想 - 为什么不完全相反?所以我在主活动中实现了onResume()方法。当用户关闭首选项时,可以很好地处理这些内容,而且每次我恢复应用程序时都可以运行我的更新方法。
答案 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()方法。它是在您的活动离开前景之前调用的。