-1

私はStrings1つのクラスから取得する必要があります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();

}

したがって、最初のクラスの値 String lat、lon を 2 番目のクラスの URL 文字列で使用したいと考えています。

前もって感謝します。

4

3 に答える 3

0

;)ダウンロードが完了したことを知るためにintentとBroadcastReceiverを使用し、JSONをダウンロードするAsyncTaskを使用する必要があります

あなたは多くの仕事をしています

于 2012-12-11T15:44:06.763 に答える
0

String lat, lonLocationGetterクラスに次のようにクラスのオブジェクトを作成することにより、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クラスがアクティビティではない場合にのみ機能します。アクティビティParseJSONである場合は、インテントを使用して1つのアクティビティから他のアクティビティにデータを渡します

于 2012-12-11T15:44:43.783 に答える
0

これらが複数のアクティビティにまたがっている場合は、インテント エクストラを介して渡すことができます。最初のクラスで、2 番目のアクティビティを起動するインテントを定義するときに、エクストラを追加します。

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

次に、2 番目のアクティビティで、getExtras を介してそれらを取得できます。

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