2012-03-07 6 views
0

私は、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に設定するのですか?

答えて

1

することは、あなたがonPostExecute()メソッドに渡す必要の分野であなたのAyncTask内のクラスを定義します。

さらに進捗ダイアログはdoInBackground()から直接更新しないでください。これはUIスレッドでは実行されないためです。 AsynClassは、onProgressUpdate()メソッドにパラメータを渡す可能性を提供し、バックグラウンド実行の進捗の変化を反映します。ここ

詳細:http://developer.android.com/reference/android/os/AsyncTask.html

0

何をdoInBackgroundの返信は、onPostExecuteに引数として渡されます。

ウェブサービスdoInBackgroundで環境設定を取得し、文字列配列として返すだけです。

onPostExecuteは、引数としてその文字列配列を持ちます。次に環境設定を適用します。代わりにdoInBackground()メソッドからの戻り値としてString[]を使用しての

+0

あなたがdoInBackgroundで見ることができるように、私は2つの文字列の配列とUserControllerでから返されたブール値を取得しています。そして、このように単純にString配列を返すことはできません。 – CodePrimate

+0

次にBundleまたはArrayListを返します。 –

関連する問題