匿名質問者

Java(Android)の変数について。

Java初心者です.クラスとかメソッドとかよく分かってないです.

ここで紹介されてるライブラリを使ってみたんですが,
http://blog.fly1ncu.com/2012/08/android-asynchronous-http-client/

AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {  
     // ここに通信が成功したときの処理をかく
System.out.println(response);
}
});

//String result = response;
この時のresponseの値をresultで使うためにはどの様な書き方をしたら良いですか?
変数のスコープなど色々調べたのですが,よく理解できませんでした.
ご教授下さい

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/05/16 21:40:04

回答1件)

匿名回答1号 No.1

非同期処理は初心者にはハードルが高いですね。
client.getを実行したとき、「ここに通信が成功したときの処理をかく」の部分は、この場では実行されず、すぐ終わってしまうわけです。



client.getより前にresponseの受け取り手になるようなオブジェクトを宣言してあげて、成功したときにはその受け取り手オブジェクトにresponseを渡すようにします。

そのオブジェクトはclient.get直後にwaitをかけます。
成功時処理の方ではresponseを渡してからnotifyをかけます。

受け取り手オブジェクトとして使える手軽なクラスがちょっと思いつかないので、文字列フィールドを一個だけ持ったやつを自作するのがいいですかね。

ここまで読んで意味がわかるようならそもそも初心者じゃないかな。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません