preferenceFragment - 之间的get preferenceManager差()和get preferenceScreen()? [英] PreferenceFragment - Difference between getPreferenceManager() and getPreferenceScreen()?

查看:141
本文介绍了preferenceFragment - 之间的get preferenceManager差()和get preferenceScreen()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我(这里详细)来实现自己的preferenceFragment子类,并希望监听preference在它的变化。 preferenceFragment为您提供了这样的方式:

<$p$p><$c$c>get$p$pferenceManager().getShared$p$pferences().registerOnShared$p$pferenceChangeListener(this);

<$p$p><$c$c>get$p$pferenceScreen().getShared$p$pferences().registerOnShared$p$pferenceChangeListener(this);

哪一个应该被使用?有什么不同?我真的不明白的<一个href="http://developer.android.com/reference/android/$p$pference/$p$pferenceFragment.html#get$p$pferenceManager%28%29">distinction在Android文档进行。

解决方案

最核心的区别是他们的名字, preferenceManger 授权访问不同的功能给开发者管理共享preferences ,如检索当前preference值的地图或设置用户preferences。为默认值。 preferenceScreen 处理显示的用户preferences屏幕,以便用户可以为其赋值。有时,这意味着显示与其他preferences屏幕上的列表项,打开另一个屏幕更preferences点击时,就属于这种情况时, preferenceScreen s的嵌套。

您的问题意味着,你认为有什么之间 preferenceManager.getShared preferences() $ P $的差异pferenceScreen.getShared preferences()的做法,但根据源$ C ​​$ C,它们是相同的。

preferenceScreen

 公开共享preferences getShared preferences(){
     如果(M preferenceManager == NULL){
         返回null;
     }

     返回米preferenceManager.getShared preferences();
 }
 

因此​​, preferenceManger preferenceScreen 是不同的实体,但共享preference 这些方法的返回值应该是相同的对象,因为 preferenceScreen 要求从 preferenceManager 。我希望这是你一直在寻找的答案。

如果你有一个选择,去与 preferenceManager.getShared preferences(),这是比较明显的,一个方法调用内部少了。

有趣的事实:

preferenceFragment

 公共preferenceManager得到preferenceManager(){
    返回米preferenceManager;
}

公共preferenceScreen的get preferenceScreen(){
    返回米preferenceManager.get preferenceScreen();
}
 

I've implemented my own PreferenceFragment subclass (detailed here), and want to listen for preference changes within it. PreferenceFragment provides you with two ways of doing this:

getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);

and

getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);

Which one should be used? What's the difference? I don't really understand the distinction made in the Android docs.

解决方案

The core difference is in their names, PreferenceManger grants access to different functionalities to the developer for managing SharedPreferences, such as retrieving the map of current preference values or setting user preferences. to their default values. PreferenceScreen handles displaying a screen of user preferences, so that the user can assign values to them. Sometimes this means displaying a list item on a screen with other preferences, that opens another screen with more preferences when clicked, as is the case when PreferenceScreens are nested.

Your question implies that you think there is a difference between what PreferenceManager.getSharedPreferences() and PreferenceScreen.getSharedPreferences() does, but according to the source code, they are identical.

PreferenceScreen:

public SharedPreferences getSharedPreferences() {
     if (mPreferenceManager == null) {
         return null;
     }

     return mPreferenceManager.getSharedPreferences();
 }

So the PreferenceManger and PreferenceScreen are different entities, but the SharedPreference those method return should be the same object, since PreferenceScreen calls the method from PreferenceManager. I hope that is the answer you've been seeking.

If you have a choice, go with PreferenceManager.getSharedPreferences(), it's more obvious and one fewer method call internally.

Fun fact:

PreferenceFragment:

public PreferenceManager getPreferenceManager() {
    return mPreferenceManager;
}

public PreferenceScreen getPreferenceScreen() {
    return mPreferenceManager.getPreferenceScreen();
}

这篇关于preferenceFragment - 之间的get preferenceManager差()和get preferenceScreen()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆