私は、Webサービスからデータを取得しますPreferenceActivity(ボイスメールのステータスなど、数字をコール転送)AsyncTask:DoInBackgroundから結果を処理するにはどうすればよいですか?
クラスを持っているが、次のようになります。
public class SettingsActivity extends PreferenceActivity
{
UserController userControl;
ListPreference lp;
public SharedPreferences prefs;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
userControl = new UserController(getParent());
addPreferencesFromResource(R.layout.settings);
new PullNumbersTask().execute();
}
private class PullNumbersTask extends AsyncTask<Void, Void, String[]>
{
private ProgressDialog Dialog;
private String[] numbers;
private boolean vmStatus;
private String[] cfInfo;
public PullNumbersTask()
{
Dialog = new ProgressDialog(getParent());
Dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
}
protected void onPreExecute()
{
Dialog.setMessage("Henter brugerindstillinger..");
Dialog.show();
}
@Override
protected String[] doInBackground(Void... arg0)
{
numbers = userControl.GetNumbers(); // Returns a String array containing available numbers
Dialog.setProgress(30);
vmStatus = userControl.GetVoicemailStatus(); // Returns a boolean containing voicemail status(enabled/disabled)
Dialog.setProgress(80);
cfInfo = userControl.GetCallForwardInfo(); // Returns a String array containing Call forward info.
Dialog.setProgress(100);
return null;
}
protected void onPostExecute(String[] result)
{
lp = (ListPreference) findPreference("shownumber_list");
lp.setEntries(result);
lp.setEntryValues(result);
Dialog.dismiss();
}
}
私は単一AsyncTaskコールをしたいことを決めましたすべてのWebサービスコールを実行する - しかし、どのように私のプリファレンスのデータをonPostExecuteに設定するのですか?
あなたがdoInBackgroundで見ることができるように、私は2つの文字列の配列とUserControllerでから返されたブール値を取得しています。そして、このように単純にString配列を返すことはできません。 – CodePrimate
次にBundleまたはArrayListを返します。 –