2012-04-02 16 views
0

私はAsyncTaskでバンドルに苦労しています。私は、AsyncTaskに渡す2つのStringを持っています。このタスクを達成するためにバンドルを使用したいと思います。バンドルをAsyncTaskに渡す

MainActivityのコード:

Bundle adresses = new Bundle(); 
adresses.putString("to", textField1.getText().toString()); 
adresses.putString("from", textField2.getText().toString()); 

new PriceTask(getApplicationContext()).execute(adresses); 

そして、私のAsycTaskで私はこのようにそれを行う:

protected Integer doInBackground(Bundle... b) { 

    Bundle result = b[0]; 
    String to = result.getString("to"); 
    String from = result.getString("from"); 

} 

それは私の2つの文字列がこの

"Sometext here, and sometext here 1234" 
のようなものが含まれていることを言及する価値があります

Put私はテキストを取得できません、私のデバッガは、バンドルが正しい情報buを含んでいると言います私の文字列は正しい情報を含んでいません。

[t, o] 

は、私がここで間違って何をやっている:私はデバッグし、私の文字列であるブレークポイントを設定すると、それだけで価値があるのだろうか?前もって感謝します。

+0

'(バンドルb)で変更しよう ' –

+0

Ayncタックスのコード全体を投稿できますか – Deva

答えて

1

以下の行を交換::

Bundle adresses = new Bundle(); 
adresses.putString("to", textField1.getText().toString()); 
adresses.putString("from", textField2.getText().toString()); 

new PriceTask(getApplicationContext()).execute(adresses); 

は、以下のようなコンストラクタを追加::

Stringにします。 文字列から; コンテキストコンテキスト。

公開YourAsyncTask(コンテキストコンテキスト、String to、Stringから){ // TODO自動生成コンストラクタスタブ this._activity = _activity; this.to = to; this.from = from; }

1

あなたが間違っているのは、doInBackgroundメソッドでデータを取得する方法です。メソッドhavingがArray型であるという引数。お気軽に...Bundle result = b[0];は、その配列の0番目の要素を取得し、Bundle参照に渡しています。

あなたの与えられたコードと詳細は、完全な答えを与えるには不十分です。同じJavaクラスのすべてのコードを使用する場合は、バンドルを使用する必要はありません。代わりに、TextFieldから取得している値の魔法を含むString型のArrayListを作成することができます。次にdoInBackgroundには、メソッド引数としてArrayListも含まれています。次に、すべてのリストアイテムを取得し、 "to"と "from"の値を区切ります。

既存のコードを使用する場合は、まずresult変数の中にあるものを探してみてください。

new PriceTask(getApplicationContext(),textField1.getText().toString(),textField2.getText().toString()).execute(); 

そしてあなたのAsycTask内での主な活動で

関連する問題