2011-08-17 22 views
2

私は最近gingerbread用のアプリケーションを開発しました。今はハニカムにしたいと思っていました。 今、私は自分のasynctaskに問題があります。私はasynktaskクラスの情報(例えば文字列)をアクティビティに渡したいと思っていました。 申し訳ありませんが、私はasynctasksを初めて使用しているので、まだそれほど多くは分かりません。AsyncTaskから文字列を取得する方法

答えて

1

AsyncTaskを内部クラスとして使用し、外部クラスのAsyncTaskを呼び出す文字列を宣言します。asyncTaskで、外部クラスで宣言された文字列の値を割り当てます。 RASELこの

​​

し、その値を取得するためのようにそれを使用することであるが、解決策になることができますし、

public static String getStr() { 
    return str; 
} 

public static void setStr(String str) { 
    GlobalVariable.str = str; 
} 

をあなたは、単にもゲッターセッターメソッドを使用することができ、その範囲は、プロジェクト全体で提案

0

String s = GlobalVariable.getStr(); 

最後に更新された値が返されます。

+0

どこにすべてを置く必要がありますか?私はonPostExecute()メソッドでそれを行う必要があると思った。しかし、何も動作しない。 – user878559

+0

私は同じクラスで私のAsynctaskを持っていません私は活動をすることができますか?なぜなら私はアクティビティやAsynctaskを拡張することができるからです。 – user878559

2

はい、解決策はActivity、あなたがこの中に行うことができStringからTextViewのテキストを設定するには、たとえばたいという意味にStringを渡すことによって、あなたのActivityとIFのごAsynkTask内部クラスを作ることですAsynkTaskonPostExecute()メソッドです。

だからあなたdoInBackground()方法は、いくつかの処理を行い、それがそのStringを返し、UIThread上で動作し、あなたのActivity UIを変更することができonPostExecute()方法、それを渡すよりもStringを構築するとしましょう。

+0

皆さんありがとうございます! あなたは私をたくさん助けました!それは素晴らしい:) – user878559

+0

あなたは答えを受け入れる必要があります:) –

13

方法はAynscTask自体は、タスクの結果を取得するようにする方法AsynkTask.get()を呼び出す必要が戻って実行(結果の型がStringの場合はもちろんの;)):

String output = new YourTask().execute(Params).get(); 
+0

これは私が自分自身に正確に同じ質問をしていたときに私の問題の解決策でした。ありがとう! –

+1

この回答は正しい答えとして受け入れられるべきです。どうかしてください:-) – Piscean

+0

ありがとうございます。 :) – Clindo

0

私はRaselのオファーは受け入れられないと思います。 Asynctaskは異なるスレッドを持つため、Asynctaskの後に、Asynctaskの前にグローバル変数を出力することがあります。したがって、時にはnullまたは不要な結果が得られます。

関連する問題