-1

我需要Strings从一类中获得LocationGetter.java

      @Override
  public void onLocationChanged(Location location) {
    int latitute = (int) (location.getLatitude());
    int longitude = (int) (location.getLongitude());
    String lat = (String.valueOf(latitute));
    String lon = (String.valueOf(longitude));

    //latituteField.setText(String.valueOf(lat));
    //longitudeField.setText(String.valueOf(lng));
  }

到另一个班级ParseJSON.java

public String readWeatherFeed() {
    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet("http://free.worldweatheronline.com/feed/weather.ashx?key=46d1ef574c094426121012&format=json&q="+lat+","+lon);
    try {
        HttpResponse response = client.execute(httpGet);
        StatusLine statusLine = response.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        if (statusCode == 200) {
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(content));
            String line;
            while ((line = reader.readLine()) != null) {
                builder.append(line);
            }
        } else {
            Log.e(ParseJSON.class.toString(), "Failed to download file");
        }
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return builder.toString();

}

所以我想在第二类的 URL 字符串中使用第一类的值 String lat, lon。

提前致谢。

4

3 回答 3

0

您可以通过String lat, lon在 LocationGetter 类中创建类的 Object 来从 LocationGetter 类传递到 ParseJSON 类ParseJSON

     @Override
  public void onLocationChanged(Location location) {
    int latitute = (int) (location.getLatitude());
    int longitude = (int) (location.getLongitude());
    String lat = (String.valueOf(latitute));
    String lon = (String.valueOf(longitude));
    ParseJSON parsjosnobj=new ParseJSON();
    String strresutn =parsjosnobj.readWeatherFeed(lat,lon)
    //latituteField.setText(String.valueOf(lat));
    //longitudeField.setText(String.valueOf(lng));
  }

并在ParseJSON课堂上将您的readWeatherFeed参数化为:

public String readWeatherFeed(String lat,String lon) {
    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet("http://free.worldweatheronline.com
   /feed/weather.ashx?key=46d1ef574c094426121012&format=json&q="+lat+","+lon);
    try {
   //your code here

注意:此解决方案仅在您的ParseJSON类不是 Activity时才有效。如果ParseJSON是 Activity,则使用 Intent 将数据从一个 Activity 传递到其他

于 2012-12-11T15:44:43.783 回答
0

;) 您需要使用意图和 BroadcastReceiver 来知道下载完成并使用 AsyncTask 下载 JSON

你有很多工作

于 2012-12-11T15:44:06.763 回答
0

如果这些跨越多个活动,您可以通过意图附加功能传递它们。在您的第一堂课中,当您定义启动第二个 Activity 的 Intent 时,您添加了一个额外的。

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("lat", mLatitude);
intent.putExtra("lon", mLongitude);
startActivity(intent);

然后在第二个活动中,您可以通过 getExtras 获取这些内容。

Bundle extras = getIntent().getExtras();
float latitude = extras.getFloat("lat");
float longitude = extras.getFloat("lon");
于 2012-12-11T15:51:15.217 回答