在我的应用程序中,我希望部分偏好密码受到保护。没有真正需要让它们“真正”得到保护——只是一些设置只有在“你知道你在做什么”的情况下才应该改变(它是一个企业应用程序)。
所以我的偏好层次结构看起来像这样:
PreferenceScreen
+-- PreferenceScreen
+-- SettingA
+-- SettingB
+-- PreferenceScreen (this one should be password protected)
+-- SettingC
+-- SettingD
问题是,我找不到任何方法来拦截点击偏好屏幕 - 我试图覆盖该onPreferenceTreeClicked
方法,但这不起作用:
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if(userHasEnteredCorrectPassword) {
return super.onPreferenceTreeClick(preferenceScreen, preference);
} else {
return false;
}
}
显然,因为super.onPreferenceTreeClick(...)
just start 是一个片段,以防偏好设置它。
我还尝试onClickListener
在onCreate
PreferenceFragment 中设置首选项 - 如下所示:
findPreference("secure_preference_screen").setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
if(userHasEnteredCorrectPassword) {
return true;
} else {
return false;
}
}
});
但这也不会拦截点击。
有没有人可能知道如何实现这样的功能?