-3
 public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);
        TextView lattv=(TextView)findViewById(R.id.lat);
        TextView lngtv=(TextView)findViewById(R.id.lng);
        JSONParstring jParser = new JSONParstring();
        String json = jParser.getJSONFromUrl(url);
        // getting JSON string from URL

        try
        {
            JSONObject jobj = new JSONObject(json);

            res = jobj.getJSONArray(TAG_RESULTS);
            for(int i = 0; i < res.length(); i++){
                JSONObject c = res.getJSONObject(i);

                JSONObject loc = c.optJSONObject(TAG_GEO).optJSONObject(TAG_LOCATION);

            String lat =loc.getString(TAG_LAT);

            String lng = loc.getString(TAG_LNG);

            lattv.setText(lat);
            lngtv.setText(lng);
            Log.i("Lat",lat);

            }
        }
        catch (JSONException e){ }
        String i=(String) lattv.getText();
        String j=(String) lngtv.getText();

        double lat1 = Double.parseDouble(i);  
        double lng1 = Double.parseDouble(j); 

ここで、try catch ステートメント内で、直接ではなく緯度と経度の値を取得しています。textview を使用してから、文字列形式に変換します。try catch ステートメントから 2 つの値を直接取得したいのですが、これは可能ですか?

4

4 に答える 4

1

こんにちは、以下のコードを試してください。

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.map);
TextView lattv=(TextView)findViewById(R.id.lat);
TextView lngtv=(TextView)findViewById(R.id.lng);
JSONParstring jParser = new JSONParstring();
String json = jParser.getJSONFromUrl(url);
// getting JSON string from URL
String lat ="",lng="";
try
{
    JSONObject jobj = new JSONObject(json);

    res = jobj.getJSONArray(TAG_RESULTS);
    for(int i = 0; i < res.length(); i++){
        JSONObject c = res.getJSONObject(i);

        JSONObject loc = c.optJSONObject(TAG_GEO).optJSONObject(TAG_LOCATION);

    lat =loc.getString(TAG_LAT);

    lng = loc.getString(TAG_LNG);

    //lattv.setText(lat);
    //lngtv.setText(lng);
    Log.i("Lat",lat);

    }
}
catch (JSONException e){ }
//String i=(String) lattv.getText();
//String j=(String) lngtv.getText();

double lat1 = Double.parseDouble(lat);  
double lng1 = Double.parseDouble(lng); 
于 2012-06-21T10:34:01.300 に答える
1

lat変数を宣言し、ブロックlngの外側で、try catchブロックの内側でその値を変更し、ブロックtry catchの外側でアクセスすることができますtry catch

于 2012-06-21T10:36:05.650 に答える
0

変数は、try/catch ブロックで直接解析できます。

double lat1;
double lng1;

try
{
    // ...
    lat1 = Double.parseDouble(loc.getString(TAG_LAT));
    lng1 = Double.parseDouble(loc.getString(TAG_LNG));
}
于 2012-06-21T10:34:03.797 に答える
0

try catch の外で String lat と lng を宣言するだけです。

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);


      String lat = null;

        String lng = null;

    JSONParstring jParser = new JSONParstring();
    String json = jParser.getJSONFromUrl(url);
    // getting JSON string from URL

    try
    {
        JSONObject jobj = new JSONObject(json);

        res = jobj.getJSONArray(TAG_RESULTS);
        for(int i = 0; i < res.length(); i++){
            JSONObject c = res.getJSONObject(i);

            JSONObject loc = c.optJSONObject(TAG_GEO).optJSONObject(TAG_LOCATION);

        lat =loc.getString(TAG_LAT);

        lng = loc.getString(TAG_LNG);

        lattv.setText(lat);
        lngtv.setText(lng);
        Log.i("Lat",lat);

        }
    }
    catch (JSONException e){ }

    double lat1 = Double.parseDouble(lat );  
    double lng1 = Double.parseDouble(lng ); 
于 2012-06-21T10:36:56.593 に答える