以编程方式滚动PreferenceActivity

时间:2011-11-17 12:35:21

标签: android scroll preferenceactivity

我有PreferenceActivity,其中定义了大量PreferenceCategories。如果我有给定类别的android:key

是否可以通过编程方式将Activity滚动到此类别?

2 个答案:

答案 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有什么作用,虽然我肯定会有一些实验可以揭示。