2013-11-27 21 views
0

我的設置屏幕在我的Android應用程序中使用首選項標頭設計,如下所示。Android:如何測試PreferenceFragments

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

現在我要測試的喜好/視圖,在打開的屏幕,這是一個優先fragment.Following是我的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(密鑰)的偏好。但我無法得到它。

任何人都可以幫助我嗎?在此先感謝:)

回答

0

我已經嘗試,並最終得到一個解決方案,通過重寫SettingsActivity的onAttachFragment()方法來獲取首選項片段到我的測試類。

fragmentsList = new ArrayList<Fragment>(); 

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

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

現在使用getFragmentsAttachedToActivity(),如果他們被添加到它,你可以訪問設置活動的所有片段。