-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 语句中获取这两个值。这可能吗?

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,你可以在块内修改它的值,在块外访问它lngtry catchtry catchtry 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 之外声明您的字符串 lat 和 lng。

公共无效 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 回答