代码之家  ›  专栏  ›  技术社区  ›  Rafael T

从PreferenceActivity或PreferenceFragment中的资源添加特定的命名SharedPreferences

  •  3
  • Rafael T  · 技术社区  · 6 年前

    如果我有 Preference-Activity -Fragment 我可以提供preference.xml文件来构建 PreferenceScreen 并通过显示 addPreferenceFromResource(R.xml.preference)

    然后可以通过以下方式检索更改的值: PreferenceManager.getDefaultSharedPreferences(Context)

    我只是想知道是否可以对我的片段采用默认的首选项以外的其他选项。

    我希望有一个preferrenceFragment,它能够将其首选项(通过XML提供)存储在我可以通过 context.getSharedPreferences("customPrefName", Context.MODE_PRIVATE) 但是我在XML中找不到

    <PreferenceScreen android:prefName="customPrefName">...
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   abhishesh    6 年前

    如果要有自定义的首选项XML文件,则需要在将首选项名称从XML添加到PreferenceFragment类的屏幕之前设置它。

    public class CustomNamePreferenceFragment extends PreferenceFragment {
    
        private static final String PREF_FILE_NAME = "custom_name_xml";
    
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            PreferenceManager preferenceManager = getPreferenceManager();
            preferenceManager.setSharedPreferencesName(PREF_FILE_NAME);
            addPreferencesFromResource(R.xml.prefs);
            ... //rest of the code
        }
    }
    

    注意:您需要在onCreate()的超级调用之后和调用addPreferencesFromResource()方法之前设置共享首选项名称。