调用它的代码在
Preference#performClick(PreferenceScreen preferenceScreen)中,它执行以下操作:
PreferenceManager preferenceManager = getPreferenceManager();
if (preferenceManager != null) {
PreferenceManager.OnPreferenceTreeClickListener listener = preferenceManager
.getOnPreferenceTreeClickListener();
if (preferenceScreen != null && listener != null
&& listener.onPreferenceTreeClick(preferenceScreen, this)) {
return;
}
}
if (mIntent != null) {
Context context = getContext();
context.startActivity(mIntent);
}
返回true将立即返回,而返回false将检查是否为此PreferenceScreen和start the specified Activity设置了Intent.
如果返回super.onPreferenceTreeClick(preferenceScreen,preference),您还将导致PreferenceFragment中的以下代码运行
if (preference.getFragment() != null &&
getActivity() instanceof OnPreferenceStartFragmentCallback) {
return ((OnPreferenceStartFragmentCallback)getActivity()).onPreferenceStartFragment(
this, preference);
}
return false;
这个检查是否有Fragment to be shown.如果不是Preference将寻找一个意图.
TLDR
首选项可以启动Intents或Fragments.返回值的含义是
> true:没有任何反应,片段和意图都会被忽略
> false:忽略片段,执行意图
> super.onPreference ..:首先尝试片段,然后尝试第二个
返回虚假;或者返回super.onPreferenceTreeClick(…)通常应该是正确的返回.返回值的含义大致是“如果存在则按意图启动活动?”.如果您已指定了intent但又不想启动该活动,则应返回true.在大多数其他情况下并不重要,因为如果您指定了该意图,则很少处理点击.