2 Stimmen

Bessere Möglichkeit der Datenübergabe zwischen Activities in Android

In meiner Anwendung rufe ich Daten von JavaScript ab, da es nicht möglich ist, die Daten als Array oder Objekt zurückzugeben, gebe ich sie als String zurück.

Um die Daten zu organisieren, erstelle ich nun eine Klasse, die Folgendes enthält ArrayList s und andere String-Variablen und weiter ich bin Array meiner Klasse Objekte Variable erstellen, um mehrere Datensätze zu speichern.

public class Data {

    ArrayList<String> m_empArrayList = new ArrayList();
    ArrayList<String> m_depArrayList = new ArrayList();
    String m_time;
    String m_duration;

}

Data d = new Data();

Was wäre ein guter Ansatz, um die Daten zwischen den Aktivitäten weiterzugeben? Als Intent s und ShredPrefrence s verwendet werden, um kleine Dateneinheiten zu übermitteln, werde ich hier nicht berücksichtigen.

6voto

Octavian A. Damiean Punkte 39044

Umsetzung der Parcelable Schnittstelle in Ihrem benutzerdefinierten Objekt und übertragen Sie es über eine Intent .

Hier ist ein Beispiel für eine Parcelable Objekt.

public class MyObject implements Parcelable {

    private String someString = null;
    private int someInteger = 0;

    public MyObject() {
        // perform initialization if necessary
    }

    private MyObject(Parcel in) {
        someString = in.readString();
        someInteger = in.readInt();
    }

    public static final Parcelable.Creator<MyObject> CREATOR =
            new Parcelable.Creator<MyObject>() {

        @Override
        public MyObject createFromParcel(Parcel source) {
            return new MyObject(source);
        }

        @Override
        public MyObject[] newArray(int size) {
            return new MyObject[size];
        }

    };

    // Getters and setters

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(someString);
        dest.writeInt(someInteger);
    }

}

Das geschieht folgendermaßen. Wenn Sie die Parcelable Schnittstelle müssen Sie einen privaten Konstruktor erstellen, der eine Parcel als Parameter. Diese Parcel enthält alle serialisierten Werte.

Sie müssen die verschachtelte Klasse Parcelable.Creator mit dem Namen CREATOR da dies von Android bei der Neuerstellung Ihres Objekts aufgerufen wird.

Die Methode describeContents() ist nur in besonderen Fällen von Nutzen. Sie können es so belassen, wie es ist, mit einem Rückgabewert von 0 .

Die interessante Aktion findet statt in writeToParcel() wo Sie, wie der Name schon sagt, Ihre Daten in eine Parcel Objekt.

Jetzt können Sie Ihr benutzerdefiniertes Objekt einfach direkt in eine Intent wie in diesem Beispiel.

MyObject myObject = new MyObject();
Intent i = new Intent();
i.setExtra("MY_OBJECT", myObject);
// implicit or explicit destination declaration
startActivity(i);

3voto

Sujit Punkte 10157

Können Sie Anmeldung Klasse, die in Android vorhanden ist, um Daten zwischen Aktivitäten zu übertragen.

hier ist ein guter Link.. http://www.helloandroid.com/tutorials/maintaining-global-application-state

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X