安卓系统:如何测试偏好片段



我的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(),您可以访问设置活动的所有片段,如果它们被添加到其中的话。

相关内容

  • 没有找到相关文章

最新更新