【问题标题】:Android : How to test PreferenceFragmentsAndroid:如何测试 PreferenceFragments
【发布时间】:2013-11-27 09:45:54
【问题描述】:

我的 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) 从中获取首选项。但我无法得到它。

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

【问题讨论】:

    标签: android preferences


    【解决方案1】:

    我已经尝试并最终获得了一种解决方案,只需覆盖 Settings 活动的 onAttachFragment() 方法即可将首选项片段放入我的测试类。

    fragmentsList = new ArrayList<Fragment>();
    
    @Override
    public void onAttachFragment(Fragment fragment)
    {
        fragmentsList.add(fragment);
    }
    
    public ArrayList<Fragment> getFragmentsAttachedToActivity()
    {
        return fragmentsList;
    }
    

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

    【讨论】:

      猜你喜欢
      • 2017-09-11
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      相关资源
      最近更新 更多