【问题标题】:Re-implement a preference screen in Android在 Android 中重新实现首选项屏幕
【发布时间】:2013-06-23 14:47:06
【问题描述】:

在我的应用程序中,我正在尝试创建一个自定义服务器列表,并且我希望能够添加它们并单独编辑它们各自的设置。

标准的 Android PreferenceFragment 看起来非常适合我的用途。有没有办法可以用它来编辑选定的项目?或者,我可以轻松地重新创建它的外观和行为吗?

简而言之:

----------------                                    ----------------
|             +|                                    |              |
| Item A       |                                    |  Preference  |
| Item B       |  -->  Click on "A", "B" or "+" --> |    Screen    |
| ...          |                                    |              |
|              |                                    |              |
----------------                                    ----------------

请注意,我也知道如何使用屏幕层次结构,但这不符合要求,因为我无法在应用运行时动态添加或删除项目。

【问题讨论】:

  • 主题是“android:Theme.Holo”...你期待什么?
  • 我不是在询问主题(我知道如何更改),而是在询问动态使用PreferenceFragment,而不必将其绑定到 XML 资源。看看我的更新,也许用架构会更清楚?

标签: android sharedpreferences preferenceactivity


【解决方案1】:

据我了解,您想在片段中动态添加首选项。我说的对吗??

看看我找到的这个样本:

onCreate(){
    this.setPreferenceScreen(createPreferenceHierarchy());
}

public PreferenceScreen createPreferenceHierarchy(){
    PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);

    // category 1 created programmatically
    PreferenceCategory cat1 = new PreferenceCategory(this);
    cat1.setTitle("title");
    root.addPreference(cat1);

    ListPreference list1 = new ListPreference(this);
    list1.setTitle(getResources().getString(R.string.some_string_title));
    list1.setSummary(getResources().getString(R.string.some_string_text));      
    list1.setDialogTitle(getResources().getString(R.string.some_string_pick_title));
    list1.setKey("your_key");

    CharSequence[] entries  = calendars.getCalenders(); //or anything else that returns the right data
    list1.setEntries(entries);
    int length              = entries.length;
    CharSequence[] values   = new CharSequence[length];
    for (int i=0; i<length; i++){
        CharSequence val = ""+i+1+"";
        values[i] =  val;
    }
    list1.setEntryValues(values);

    cat1.addPreference(list1);

    return root;
}//end method

【讨论】:

  • 很好,这正是我想要的!我试过谷歌,但搜索“android自定义偏好屏幕”或其他东西并没有完全产生相关答案......
  • 这就是我在阅读您的问题后在 Google 中输入的内容:android add preference programmatically
  • 哇。那么我必须为我缺乏洞察力而道歉。还是谢谢一堆;)
  • 最重要的是你得到了答案 ;-)
猜你喜欢
  • 2013-08-01
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多