我的android应用程序中有设置屏幕,该屏幕是使用首选项标题设计的,如下所示。
<header
android:id="@+id/preference_header_account"
android:fragment="testPackage.TestPreferenceFragment"
android:key="pref_key_username"
android:summary="dynamic"
android:title="@string/username_title" />
现在,在我的测试中,我可以获得这个标题的视图,并且我正在点击该视图以获得下面的TestPreferenceFragment屏幕。
ArrayList<Header> headers = new ArrayList<Header>();
ListAdapter listAdapter = getActivity().getListAdapter();
for (int i = 0; i < listAdapter.getCount(); i++) {
headers.add((Header) listAdapter.getItem(i));
}
for (int i = 0; i < listAdapter.getCount(); i++) {
if (headers.get(i).id == R.Id.userName) {
position = i;
}
}
View userName = getActivity().getListView().getChildAt(position);
TouchUtils.tapView(this, userName);
现在我想测试打开的屏幕中的首选项/视图,这是一个首选项片段。下面是我在TestPreferenceFragment中加载的xml。
<testpackage.CustomPreference1
android:inputType="textCapWords"
android:key="pref_key_username"
android:maxLines="1"
android:persistent="false"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/test_username" />
我可以想到的一个测试偏好片段的方法是,如果我在测试用例中获得偏好片段,我可以使用findPreference(key)从中获得偏好。但是我不能得到它。
有人能帮我吗??提前感谢:)
我已经尝试并最终获得了一个解决方案,只需重写Settings活动的onAttachFragment()方法就可以将首选项片段放入我的测试类中。
fragmentsList = new ArrayList<Fragment>();
@Override
public void onAttachFragment(Fragment fragment)
{
fragmentsList.add(fragment);
}
public ArrayList<Fragment> getFragmentsAttachedToActivity()
{
return fragmentsList;
}
现在使用getFragmentsAttachedToActivity(),您可以访问设置活动的所有片段,如果它们被添加到其中的话。