Android Preference.getExtras()的用途是什么?

nfg76nw0  于 2023-03-21  发布在  Android
关注(0)|答案(3)|浏览(134)

Preference类有一个名为getExtras()的方法。
它可能与Preference Intent相关,也可能不相关,但Extras可以直接使用Intent来获取和放置。
Preference类中没有putExtra/s()方法,则...
getExtras()的作用是什么?2在哪些场景中使用?

y4ekin9u

y4ekin9u1#

getExtras()的作用是什么?
它没什么用。真的。
the Preference source code中,有一个private成员变量mExtras

private Bundle mExtras;

但是,它从未以任何方式更改过(并且无论如何都不能被外部类访问),除了以下情况:

public Bundle getExtras() {
    if (mExtras == null) {
        mExtras = new Bundle();
    }
    return mExtras;
}
public Bundle peekExtras() {
    return mExtras;
}

我想它将来可能会被用于某些用途,但它是在API 11中添加的,在API 16中仍然没有用。
Preference类中没有putExtra/s()方法,那么......它在哪个场景中使用?
我想您可以使用它将项目与偏好关联起来,例如:

Bundle extras = myPref.getExtras();
extras.putString("KEY", "Value");

你不需要putExtra()来做这些,而是直接访问Bundle,但这似乎就是它的用处。

uemypmqf

uemypmqf2#

文档中没有详细解释,但是#getExtras是用于通过#setFragment启动另一个片段的首选项,只要使用PreferenceActivity,首选项中指定的任何额外内容都会传递到指定的片段。

wlp8pajw

wlp8pajw3#

为了改进这个主题。getExtras()对于将一些数据与动态生成的首选项关联起来特别有用,例如交换机首选项列表。然后附加Preference.OnPreferenceClickListener#onPreferenceChange(Preference,Object)并监听它们。一旦首选项状态发生变化,您将直接获得它们的附加项。否则,您必须为它们对应的有效负载数据维护一个HashMap首选项键。

相关问题