gpt4 book ai didi

android - PreferenceFragment::onPreferenceTreeClick 返回值 - 它有什么作用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:38 26 4
gpt4 key购买 nike

看来PreferenceFragment::onPreferenceTreeClick(...)的返回值怎么查不到啊被解释。在文档中没有提到如何使用返回值(Eclipse 说“@inheritDoc”并且 Android HTML reference 有一个空体)。

我尝试在 PreferenceActivity::onPreferenceTreeClick(...) 上已弃用的 API 中查找它但它只是说,好吧,它已被弃用。

此外,我尝试从该方法返回 true 和 false,但在我看来它对任何事情都没有影响。

那么 - 如果有人能告诉我返回值发生了什么变化?

最佳答案

调用这个的代码在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 设置了 Intentstart the specified Activity .

如果您返回 super.onPreferenceTreeClick(preferenceScreen, preference),您还将导致以下来自 PreferenceFragment 的代码 fragment 运行

if (preference.getFragment() != null &&
getActivity() instanceof OnPreferenceStartFragmentCallback) {
return ((OnPreferenceStartFragmentCallback)getActivity()).onPreferenceStartFragment(
this, preference);
}
return false;

这个检查是否有 Fragment to be shown .如果不是,Preference 将查找 Intent

长见识

首选项可以启动 IntentFragment。返回值的含义是

  • true :没有任何反应, fragment 和 Intent 都被忽略
  • false : fragment 被忽略, Intent 被执行
  • super.onPreference.. :首先尝试 fragment ,其次尝试 Intent

return false;return super.onPreferenceTreeClick(...) 通常应该是返回的正确内容。返回值的意思大致就是“Start Activity by intent if exist?”。如果您指定了 Intent 但不想启动 Activity ,则应返回 true。在大多数其他情况下这无关紧要,因为如果您指定了该 Intent ,则很少会处理点击。

关于android - PreferenceFragment::onPreferenceTreeClick 返回值 - 它有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16604567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com