2012-07-24 162 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