2012-07-24 111 views
0

我想用res/anim文件夾的內容來填充ListPreference,但我遇到了一個問題,它一直保持空白,我有一個字符串的靜態數組來填充它,需要它是動態的,我可以在logcat中打印文本,它只是不填充列表你能幫助我嗎?動態填充ListPreference

PreferenceActivityMenu.java

 CharSequence[] entries = null; 
     CharSequence[] entryValues = null; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 


    SharedPreferences prefs=getPreferences(Context.MODE_PRIVATE); 

    ListPreference prefListAnim = new ListPreference(this); 

    listAnim(); 

    prefListAnim.setEntries(entries); 

    prefListAnim.setEntryValues(entryValues); 


    } 

@Override 
public boolean onPreferenceClick(Preference preference) { 
    // TODO Auto-generated method stub 
    return false; 
} 

public void listAnim() { 
    Field[] fields = R.anim.class.getFields(); 
    entries = new String[fields.length]; 
    entryValues = new String[fields.length]; 

    for (int count = 0; count < fields.length; count++) { 
     Log.i("Raw Asset: ", fields[count].getName()); 
     entries[count] = fields[count].getName(); 

     entryValues[count] = Integer.toString(count); 


    } 
} 

和preference.xml

<PreferenceCategory android:title="Animation Transitions" > 


    <ListPreference 

     android:dialogTitle="@string/prefsList_dialogTitle" 
     android:key="prefList_animations" 
     android:summary="@string/prefsList_summary" 
     android:title="@string/prefsList_title" > 
    </ListPreference> 
</PreferenceCategory> 

感謝您的幫助

回答

0

您的列表數據設置爲不同的偏好比在XML聲明。目前你對新創建的ListPreference設置數據:

ListPreference prefListAnim = new ListPreference(this); 

但是,你顯示在XML中聲明的(空)一個。你應該做任何一個或另一個。例如,最簡單的解決辦法可能是改變上述從XML膨脹的偏好代替:

ListPreference prefListAnim = (ListPreference) findPreference("prefList_animations"); 
+0

感謝您的幫助,我與查找偏好開始做你的方法,但我感動,因爲我不停嘗試差異的方式,我解決了我的問題,因爲我有我的xml中的另一個屬性'android:dialogMessage ='選擇''當我刪除這段代碼,它都運行良好,不知道爲什麼。 – 2012-07-24 23:23:01