Android:如何测试首选项碎片

时间:2013-11-27 09:45:54

标签: android preferences

我的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);

现在我想在打开的屏幕中测试首选项/视图,这是一个首选片段。以下是我的xml,它正在TestPreferenceFragment中加载。

<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)从中获得偏好。但我无法得到它。

任何人都可以帮助我吗?在此先感谢:)

1 个答案:

答案 0 :(得分:0)

我已经尝试过,最后得到一个解决方案,只需重写设置活动的onAttachFragment()方法,将偏好片段放入我的测试类。

fragmentsList = new ArrayList<Fragment>();

@Override
public void onAttachFragment(Fragment fragment)
{
    fragmentsList.add(fragment);
}

public ArrayList<Fragment> getFragmentsAttachedToActivity()
{
    return fragmentsList;
}

现在使用getFragmentsAttachedToActivity(),您可以访问设置活动的所有片段(如果已添加到设置活动中)。