2016-10-03 8 views
0

Ich habe 2 verschiedene Klasse, erste Klasse Tracking.java und zweite Klasse ReportingService.java. Wie übergebe ich die Adresse von ReportingService.java an Tracking.java?Wie weiterleitenReceived Daten zwischen den Klassen Android

private void doLogout(){ 
    Log.i(TAG, "loginOnClick: "); 
    //ReportingService rs = new ReportingService(); 
    //rs.sendUpdateLocation(boolean isUpdate, Location); 
    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(NetHelper.getDomainAddress(this)) 
      .addConverterFactory(ScalarsConverterFactory.create()) 
      .build(); 

    ToyotaService toyotaService = retrofit.create(ToyotaService.class); 

    // caller 
    Call<ResponseBody> caller = toyotaService.logout("0,0", 
      AppConfig.getUserName(this), 
      "null"); 
    // async task 
    caller.enqueue(new Callback<ResponseBody>() { 
     @Override 
     public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
      try { 
       Log.i(TAG, "onResponse: "+response.body().string()); 
      }catch (IOException e){} 

     } 

     @Override 
     public void onFailure(Call<ResponseBody> call, Throwable t) { 
      Log.e(TAG, "onFailure: ", t); 
     } 
    }); 

    AppConfig.saveLoginStatus(this, AppConfig.LOGOUT); 
    AppConfig.storeAccount(this, "", ""); 

    Intent intent = new Intent(this, Main2Activity.class); 
    startActivity(intent); 
    finish(); 
} 

Dieser Code für den Standort-Adresse

Call<ResponseBody> caller = toyotaService.logout("0,0", 
      AppConfig.getUserName(this), 
      "null"); 

Und das ist Klasse ReportingService.java Lage des Codes erhalten longtitude, Breite und Standort-Adresse von googlemap

private void sendUpdateLocation(boolean isUpdate, Location location) { 
    Log.i(TAG, "onLocationChanged "+location.getLongitude()); 

    Geocoder geocoder; 
    List<Address> addresses; 
    geocoder = new Geocoder(this, Locale.getDefault()); 
    String street = "Unknown"; 
    try { 
     addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1); 
     if (addresses != null) { 
      String address = addresses.get(0).getAddressLine(0); 
      String city = addresses.get(0).getLocality(); 
      String state = addresses.get(0).getAdminArea(); 
      String country = addresses.get(0).getCountryName(); 
      String postalCode = addresses.get(0).getPostalCode(); 
      String knowName = addresses.get(0).getFeatureName(); 
      street = address + " " + city + " " + state + " " + country + " " + postalCode + " " + knowName; 
      Log.i(TAG, "street "+street); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    if (isUpdate) 
     NetHelper.report(this, AppConfig.getUserName(this), location.getLatitude(), 
       location.getLongitude(), street, new PostWebTask.HttpConnectionEvent() { 
      @Override 
      public void preEvent() { 

      } 

      @Override 
      public void postEvent(String... result) { 
       try { 
        int nextUpdate = NetHelper.getNextUpdateSchedule(result[0]); // in second 
        Log.i(TAG, "next is in " + nextUpdate + " seconds"); 
        if (nextUpdate > 60) { 
         dismissNotification(); 
         isRunning = false; 
        } else if (!isRunning){ 
         showNotification(); 
         isRunning = true; 
        } 
        handler.postDelayed(location_updater, nextUpdate * 1000 /*millisecond*/); 
       }catch (JSONException e){ 
        Log.i(TAG, "postEvent error update"); 
        e.printStackTrace(); 
        handler.postDelayed(location_updater, getResources().getInteger(R.integer.interval) * 1000 /*millisecond*/); 
       } 
      } 
     }); 
    else 
     NetHelper.logout(this, AppConfig.getUserName(this), location.getLatitude(), 
       location.getLongitude(), street, new PostWebTask.HttpConnectionEvent() { 
      @Override 
      public void preEvent() { 

      } 

      @Override 
      public void postEvent(String... result) { 
       Log.i(TAG, "postEvent logout "+result); 
      } 
     }); 
} 

Dank

Antwort

0

Verwenden this Bibliothek und folgt im Innern des bereitgestellten Beispiel. Es ist für die Weitergabe von allem, was Sie wünschen, wo immer Sie möchten.

0

Ich denke, nur mit einer Schnittstelle wird Ihr Problem lösen. Pseudocode

ReportingException.java

fügen Sie diese

public interface myLocationListner{ 
onRecievedLocation(String location); 
} 

private myLocationListner mylocation; 

// unten Zeile hinzufügen, wo Sie Adresse erhalten

mylocation.onRecievedLocation(street); 

dann implementieren myLocationListner in Tracking.java für Sie da gehen :)

0

können Sie eine Absicht verwenden:

Die Absicht wird die zweite Receiver Feuer und die Daten in die

Wenn BroadcastReceiver passieren:

Intent intent = new Intent(); 
intent.setAction("com.example.2ndReceiverFilter"); 
intent.putExtra("key" ,); //put the data you want to pass on 
getApplicationContext().sendBroadcast(intent); 

Wenn Service:

Intent intent = new Intent();` 
intent.putExtra("key" , value); //put the data you want to pass on 
startService(ReportingService.this , Tracking.class); 

in Tracking.java, um die Daten, die Sie weitergegeben haben: innerhalb onReceive, setzen Sie diesen Code zuerst

intent.getExtras().getString("key");//if int use getInt("key") 
Verwandte Themen