Android Objekt weiter geben

mOneStyle

Mitglied
Hallo,
Ich habe zwei Klassen ConnectActivity und ConrollerActivity. In ConnectActivity wird ein Object vom typ Connection (auch eine eigene klasse) erstellt. Ich muss irgendwie dieses Objekt ControllerActivity übergeben. ControllerActivity rufe ich so auf:
Java:
Intent intent = new Intent(this, ControllerActivity.class);
startActivity(intent);
Ich habe es schon mit Gson probiert, aber ich bekomme da immer ein Stackoverflow. Ich glaube weil Connection AsyncTask extended.
Hier etwas Code:
Gson:
Java:
Connection c = new Connection();
Gson gS = new Gson();
String target = gS.toJson(c); //<-- gibt stackoverflowError
Connection:
Java:
public class Connection extends AsyncTask<Void,Void,Void> {
    Socket socket = null;
    DataOutputStream DOS = null;
    DataInputStream DIS = null;
    boolean connected = false;
    String message = "";

    void write(String message) {
        this.message = message;
    }

    @Override
    protected Void doInBackground(Void... voids) {
        try {
            socket = new Socket("192.168.2.105",5000);
            DOS = new DataOutputStream(socket.getOutputStream());
            DIS = new DataInputStream(socket.getInputStream());
            DOS.writeByte(1);
            System.out.println(DIS.readUTF());

            connected = true;
            if(connected) {
                do {
                    if(!(message.isEmpty())) {
                        DOS.writeUTF(message);
                        System.out.println(message);
                        if(!message.contains("disconnect")) message = "";
                    }
                } while(!message.contains("disconnect"));
            }
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            //openConnectActivity();
            DOS.flush();
            //DOS.close();
            //DIS.close();
            //socket.close(); //TODO ON APP CLOSE
        } catch (IOException e) {

            e.printStackTrace();
        }

        return null;
    }
}

Wie kann ich Gson verwenden oder gibt es noch eine andere Möglichkeit bin echt am verzweifeln -.-
 
Zuletzt bearbeitet von einem Moderator:

mOneStyle

Mitglied
Hab das mit Serialization gemacht bekomme diesen Fehler
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = de.thm.mni.swtp.formeldrone.swtp_autonomousdrone.Connection)
 

truesoul

Top Contributor
Hab das mit Serialization gemacht bekomme diesen Fehler
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = de.thm.mni.swtp.formeldrone.swtp_autonomousdrone.Connection)

Hallo.

Wieso verwendest du nicht einfach mal Google?

Aber ich will ja nicht so sein.
Connection ist nicht Serializable.

Grüße
 

truesoul

Top Contributor
Gar nicht.

Wenn du vielleicht erklärst was du eigentlich vorhast kann man dir sicher helfen.
Warum musst du Connection weiterreichen?
Warum verwendest du nicht ein Hintergrund Service?

Grüße
 

mOneStyle

Mitglied
Ich will eine Drohne steuern mit der App im ersten Frame drückt man connect to Laptop bei der App da wird eine Verbindung aufgebaut falls möglich und wenn die Verbindung erfolgreich aufgebaut wurde kommt man zum controller jetzt muss der Controller messages dem server schicken welche tasten gedrückt wurden also brauch ich die Connection vom ersten frame oder wie sollte man das machen
 

truesoul

Top Contributor
Mit einem Background Service.

Die Doku siehe Hier

Dein Service sorgt für die Verbindung.
Und der zweite Frame schickt dann die Befehle wie vor, zurück usw. (Bildlich gesprochen).
Der Service übersetzt diese und schickt diese weiter.
 

Ähnliche Java Themen

Neue Themen


Oben