我有PreferenceActivity
,其中定义了大量PreferenceCategories
。如果我有给定类别的android:key
。
是否可以通过编程方式将Activity
滚动到此类别?
答案 0 :(得分:5)
我知道这是一个陈旧的回答问题,但我找到了比迭代所有类别更好的方法。
PreferenceCategory myCat = (PreferenceCategory) findPreference("myKey");
int position = myCat.getOrder();
getListView().setSelection(position);
答案 1 :(得分:4)
您可以像这样迭代活动中的首选项:
PreferenceScreen screen = getPreferenceScreen();
int i;
for(i = 0; i < screen.getPreferenceCount(); i++) {
String key = screen.getPreference(i).getKey();
// be careful, because key will be null if no android:key is specified
// (as is often the case for PreferenceCategory elements)
if("myKey".equals(key))
break;
}
// PreferenceActivity extends ListActivity, so the ListView is accessible...
getListView().setSelection(i);
使用Android SDK 14测试,它运行正常。
虽然注意,但在onCreate或onResume内调用getListView().setSelection(i)
无效。必须在绘制活动后调用它。
getPreferenceCount()方法计算所有PreferenceCategories及其嵌套首选项。不知道它对于PreferenceScreens有什么作用,虽然我肯定会有一些实验可以揭示。