私はAndroid開発に比較的慣れておらず、最初のRESTベースのアプリを書いています。少し簡単にするために、 Android非同期HTTPクライアントを使用することを選択しました。私は現在、そのリンクのメインの「推奨される使用法」セクションを実行しているだけで、基本的には基本的な静的HTTPクライアントを作成しているだけです。与えられたコードに従っていますが、別のAPIを参照するように変更しています。問題のコードは次のとおりです。
public void getFactualResults() throws JSONException {
FactualRestClient.get("q=Coffee,Los Angeles", null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONArray venues) {
// Pull out the first restaurant from the returned search results
JSONObject firstVenue = venues.get(0);
String venueName = firstVenue.getString("name");
// Do something with the response
System.out.println(venueName);
}
});
}
このString venueName = firstVenue.getString("name");
行は現在、Eclipseでエラーをスローしています:「タイプの不一致:オブジェクトからJSONObjectに変換できません」。このエラーが発生するのはなぜですか?他のスレッドを検索した結果、getJSONObject(0)
代わりに使用してみましget(0)
たが、さらにエラーが発生し、Eclipseがtry/catchの使用を提案しました。チュートリアルのコードは変更していませんが、変数名とURLを除いて変更していません。何か考え/ヒント/アドバイスはありますか?
本当にありがとう。
編集:
これがonSuccessメソッドであり、提案されたtry/catchブロックを含むように変更されています。Eclipseは、firstVenueの場合は「ローカル変数が初期化されていない可能性があります」を表示しますvenueName = firstVenue.getString("name");
。venueNameの場合は、同じエラーが発生した直後System.out.println(venueName);
に初期化しても表示されます。これらを解決するための助けをいただければ幸いです。String venueName;
JSONObject firstVenue;
public void onSuccess(JSONArray venues) {
// Pull out the first restaurant from the returned search results
JSONObject firstVenue;
try {
firstVenue = venues.getJSONObject(0);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String venueName;
try {
venueName = firstVenue.getString("name");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Do something with the response
System.out.println(venueName);
}