gre*_*egm 11 android android-preferences
我如何得到PreferenceCategory一个Preference?PreferenceManager有一个findPreference方法,但Preference没有getCategory方法.
有没有办法从它的关键名称得到PreferenceCategory一个Preference?
Sta*_*lav 10
SDK中没有内置方法来获取首选项的父级(类别或屏幕).您应该在层次结构中手动找到它,以便能够编写如下内容:
Preference preference = findPreference(key);
getParent(preference).removePreference(preference);
Run Code Online (Sandbox Code Playgroud)
以下是启用它的方法.请注意,它应该写在您的首选项活动(从PreferenceActivity类派生)中,它可以通过调用getPreferenceScreen()来提供层次结构根目录.
private PreferenceGroup getParent(Preference preference)
{
return getParent(getPreferenceScreen(), preference);
}
private PreferenceGroup getParent(PreferenceGroup root, Preference preference)
{
for (int i = 0; i < root.getPreferenceCount(); i++)
{
Preference p = root.getPreference(i);
if (p == preference)
return root;
if (PreferenceGroup.class.isInstance(p))
{
PreferenceGroup parent = getParent((PreferenceGroup)p, preference);
if (parent != null)
return parent;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
没有 getCategory() 方法,但您可以使用以下解决方法:如果您不使用 Preference 的依赖属性,您可以将 Preference 设置为依赖于 PreferenceCategory,然后使用 getDependency() 方法。例如:
<PreferenceCategory
android:title="MyPrefCat"
android:key="category"
android:selectable="false">
<CheckBoxPreference
android:key="chkbox"
android:dependency="category" />
</PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)
在 PreferenceActivity 中,您现在可以使用:
CheckBoxPreference currentPref = (CheckBoxPreference) findPreference("chkbox");
String prefCatKey = currentPref.getDependency();
PreferenceCategory catPref = (PreferenceCategory) findPreference(prefCatKey);
// Access PreferenceCategory's attributes such as its title:
String prefCatTitle = catPref.getTitle().toString();
Run Code Online (Sandbox Code Playgroud)
我在首选项中没有看到 getCategory 或 getGroup 。
\n\n但是,您可以使用从http://developer.android.com/reference/android/preference/PreferenceGroup.html继承的 PreferenceCategory\nin 方法
\n\ngetPreference(int index)\n\nint getPreferenceCount()\nRun Code Online (Sandbox Code Playgroud)\n\n对于您想要做的事情来说,这确实是一个很长的路要走,但看起来您确实应该重建首选项菜单。
\n\n其他替代方案是 saxp 您的 xml prefrence 文件。
\n\n问候,\n St\xc3\xa9phane
\n| 归档时间: |
|
| 查看次数: |
7575 次 |
| 最近记录: |