如何将首选项动态添加到首选项屏幕并绑定其值?

fra*_*ank 6 android preferences

我是Android的新手.在我的应用程序中,我想做这样的事情:我有一个容器,我想动态地添加项目,在一个项目中可能有一些字段,所以树将是这样的:

main container

- item 1
   --field 1
   --field 2
   ...
   --field n
 - item 2
   --field 1
   --filed 2
.......
 - item n
   --field 1
   --field 2
   ...
   field n
Run Code Online (Sandbox Code Playgroud)

我想使用首选项来做这个,因为我需要在应用程序中存储用户的信息,但不知道如何.你能帮我吗?

Kat*_*ina 22

您需要创建一个空的xml文件PreferenceScreen:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

然后在你的PreferenceFragment你必须调用以下方法onCreate(Bundle savedInstanceState) {...}

addPreferencesFromResource(R.xml.pref_empty);
Run Code Online (Sandbox Code Playgroud)

之后你可以添加Preference如下:

PreferenceScreen preferenceScreen = this.getPreferenceScreen();

// create preferences manually
PreferenceCategory preferenceCategory = new PreferenceCategory(preferenceScreen.getContext());
preferenceCategory.setTitle("yourTitle");
// do anything you want with the preferencecategory here
preferenceScreen.addPreference(preferenceCategory);

Preference preference = new Preference(preferenceScreen.getContext());
preference.setTitle("yourTitle");
// do anything you want with the preferencey here
preferenceCategory.addPreference(preference);
Run Code Online (Sandbox Code Playgroud)

当然,您可以在循环中添加首选项和类别以动态添加它们.

  • 如果这解决了问题,请接受作为答案。 (2认同)
  • 重要的是,在将任何首选项添加到类别之前,将任何首选项类别添加到首选项屏幕,否则您将得到一个空指针 (2认同)