ボタンが5つあるとします。ボタンごとに、リスナーを起動できるようにしたいと考えています。リスナーが起動したら、SDK で非同期タスクを起動し、SDK が非同期タスクのステータスを返すようにします。
1) 別のリスナー/ボタンを作成しますか? Androidで登録されたリスナーは1つしか持てないことをどこかで読みました。それが本当なら、どうすれば多くのリスナーを処理できますか?
2) SDK から API レベルに postExecute 呼び出しの結果を返すにはどうすればよいですか?
ボタンが5つあるとします。ボタンごとに、リスナーを起動できるようにしたいと考えています。リスナーが起動したら、SDK で非同期タスクを起動し、SDK が非同期タスクのステータスを返すようにします。
1) 別のリスナー/ボタンを作成しますか? Androidで登録されたリスナーは1つしか持てないことをどこかで読みました。それが本当なら、どうすれば多くのリスナーを処理できますか?
2) SDK から API レベルに postExecute 呼び出しの結果を返すにはどうすればよいですか?
1) 別のリスナー/ボタンを作成しますか? Androidで登録されたリスナーは1つしか持てないことをどこかで読みました。それが本当なら、多くのリスナーをどのように処理すればよいですか?
View は、各タイプのリスナーを 1 つだけ持つことができます。つまり、Button は 2 つのリスナーを持つことはできませんOnClickListeners
。これを、1 つのリスナーを複数のビューにアタッチできるという事実と混同しないでください。つまり、ButtonA と ButtonB は同じものを持つことができます。OnClickListener
2) SDK から API レベルに postExecute 呼び出しの結果を返すにはどうすればよいですか?
あなたの用語は正しくありませんが、行っていくうちに理解できるでしょう。通常onPostExecute()
、別のメソッドを呼び出すか、View を直接操作します。
@Override
protected void onPostExecute(String result) {
doSomething(result);
textView.setText(result);
}
複数のリスナーを持つことができ、それらで何をしたいかによって、ボタンごとに 1 つ持つことができます。に関してpostExecute()
は、UI スレッドで実行されるため、そこから結果を表示したり、必要なことを実行したりできます。詳細については、試したコードの一部を提供し、問題が発生している場所を正確に説明する必要があります。まだ行っていない場合は、
最も簡単なのは、アクティビティで 1 つのリスナーをセットアップしてから、複数のボタンを処理する場合です。これはOnKeyListenerクラスで行うことができます。次に、ヒットしたキーでスイッチを実行し、操作したいボタンのケースをセットアップして、AsyncTask
.
「postExecuteを返す」とはどういう意味かよくわかりません。しかし、AsyncTaskを見ると、適切なパラメーターを使用して onPostExecute に結果を返す方法がわかります。のサブクラスをインスタンス化するAsyncTask
と、コールバックを実行したいアクティビティまたはコンテキストを簡単に渡すことができます。