我在PreferenceActivity中具有以下ListPreference,希望使用从Web服务检索到的电话号码进行填充。我该如何成功做到这一点?
<PreferenceCategory
android:title="@string/category_shownumber">
<ListPreference
android:title="@string/shownumber_header"
android:summary="@string/shownumber_summary"
android:key="shownumber_list"
android:defaultValue="@string/shownumber_default"
android:entries="@array/listArray"
android:entryValues="@array/listValues" />
</PreferenceCategory>
我希望我的android:entries来自此类中doInBackground返回的字符串数组:
private class PullNumbersTask extends AsyncTask<Void, Void, String[]>
{
private Context ctx;
public PullNumbersTask(Context context)
{
super();
this.ctx=context;
}
private ProgressDialog Dialog = new ProgressDialog(getParent());
protected void onPreExecute()
{
Dialog.setMessage("Fetching numbers..");
Dialog.show();
}
@Override
protected String[] doInBackground(Void... arg0) {
return (userControl.GetNumbers());
}
protected void onPostExecute(String[] result)
{
// Do stuff with my array
}
有什么建议么?
最佳答案
在onPostExecute中简单地调用它怎么样
listPref.setEntries(result);
(显然,您需要对ListPreference对象的引用)
编辑
要实际控制ListPreference对象,您需要
ListPreference listPref = (ListPreference) findPreference("shownumber_list");
必须先完成对
addPreferencesFromResource(R.xml.preferences);
的调用(最有可能在onCreate()中)