auf die lokalen Variablen von innen Klasse zugreifen?

T

the_time

Ambitioniertes Mitglied
0
Hallo,
ich versuche gerade einen JSON string von meiner Daten mithilfe von Gson Bibliothek herzustellen aber ich habe das problem dass die Daten(PLong, pLat, route_number, formatted) als null an meine Data klasse übergeben werden aber ich konnte sie in der xml Datei anzeigen bevor ich sie als global deklariert habe. Wie kann ich auf die lokalen Variablen in den Methoden der innern Klasse von der außen Klasse zugreifen?

Schöne Grüße,
the_time

PHP:
public class MainActivity extends ActionBarActivity {

    BroadcastReceiverListener wifi_receiver;

    // Global variables to send to the server.
    double pLong;
    double pLat;
    int route_number;
    String formatted;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        LocationListener ll = new myLocationListener();
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2 * 60 * 1000,
                0, ll);
    

        // envelop the data in JSON format.

         Data d = new Data(pLong, pLat, formatted,route_number);
         Gson gson = new GsonBuilder().registerTypeAdapter(Data.class, new
         DataSerializer()).create();
         System.out.println(gson.toJson(d));

    }

    private class BroadcastReceiverListener extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(
                    android.net.wifi.WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
                route_number = parse_SSID(ssid); // Ich will auf diese zugreifen

            }
        }

    }

    class myLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub
            if (location != null) {
                pLong = location.getLongitude(); // auf diese auch
                pLat = location.getLatitude(); // auf diese auch

                SimpleDateFormat sdf = new SimpleDateFormat(
                        "dd.MM.yyyy HH:mm:ss", java.util.Locale.getDefault());
                formatted = sdf.format(location.getTime()); // auf diese auch

            }
        }

    }

}
 
Zuletzt bearbeitet:
Schreib dir geeignete Getter. Dafür sind sie da.
 
Meine getter und setter sind in der Data Klasse oder soll ich sie in der MainActivity schreiben? Ich benutze die Gson Bibliothek...
 
Du serialisierst sofort in der onCreate. Dort wurden die Daten nocht nicht initialisiert, weil onLocationChanged noch nicht aufgerufen wurde. OnLocationChanged ist ein callback der asynchron irgendwann passieren kann.

Wenn du darauf reagieren willst, solltest du das serialisieren in Gson erst in deinem LocationListener machen, nachdem die Daten auch geschrieben wurden.
 
Ok und was mit route_number? also wenn ich dort serialisiere ist sie dann dort nicht unbekannt? helft mir nicht wenn ich wie "Thyrion" gesagt hat, getter dafür machen?
 
Naja, da du zwei asynchrone Callbacks hast, musst du dir halt eine schlaue Lösung ausdenken, wann du dein JSON baust... So schwer ist das ja nicht da drauf zu kommen ;)

Die Getter helfen dir an der Stelle gar nichts. Die ändern auch nichts an der Tatsache, dass der Wert null ist.
 

Ähnliche Themen

M
Antworten
4
Aufrufe
1.178
swa00
swa00
M
  • MikelKatzengreis
Antworten
5
Aufrufe
158
swa00
swa00
Zurück
Oben Unten