我在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()中)

10-07 12:20
查看更多