Pass serialisierbare Objekt durch Vorsatz

Dies ist mein Erster Versuch die Frage für eine Lösung für ein problem von mir, so versuchen Sie, freundlich zu sein, Jungs! Ich habe bereits zahlreiche Lösungen für Probleme, die ich mit in diese Website erhalten, indem Sie einfach die Suche, aber dieses mal hatte ich kein Glück, denke ich. Ich habe nichts gefunden was passt also mein problem ist dass ich schließlich zu Fragen eine neue Frage.

Ich 'm versucht, übergeben Sie ein Objekt über ein intent von einer Aktivität zur anderen. Ich habe eine abstrakte Klasse und zwei Subklassen (einer von Ihnen auch Abstrakt) wie folgt. Ich brauche Sie zu Abstrakt. Ich entfernt eine Menge von code (abstrakte Methoden etc.) nur das zu finden, was das problem ist und ich endete mit dieser wirklich einfachen Klassen und ich habe immer noch das gleiche problem.

public abstract class MyObject {

    private boolean New;
    private boolean Modified;

    public MyObject() {
        New = true;
    }

    public boolean isNew() {
        return New;
    }

    protected void setNew(boolean value) {
        New = value;
    }

    protected boolean isModified() {
        return Modified;
    }

    protected void setModified(boolean value) {
        Modified = value;
    }

}

public abstract class MyItemBase extends MyObject {

    private Long Id;
    private String Description;

    public MyItemBase() {
        super();
    }

    public Long getId() {
        return Id;
    }

    public void setId(Long id) {
        Id = id;
    }

    public String getDescription() {
        return Description;
    }

    public void setDescription(String description) {
        Description = description;
    }

}

public class MyItem extends MyItemBase implements Serializable {

    private static final long serialVersionUID = -2875901021692711701L;

    public MyItem() {
        super();
    }

}

Habe ich zwei Aktivitäten ActivityA mit einer Taste zum aufrufen ActivityB wie folgt.

public class ActivityA extends Activity {

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

        Button btn = (Button) findViewById(R.id.button);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(),
                        ActivityB.class);

                MyItem item = new MyItem();
                item.setId((long) 1);
                item.setDescription("test");

                intent.putExtra("MyItem", (Serializable) item);
                startActivityForResult(intent, 1);
            }

        });
    }

}

public class ActivityB extends Activity {

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

        MyItem item = (MyItem) getIntent().getSerializableExtra("MyItem");
        ((TextView) findViewById(R.id.text)).setText(item.getDescription());
    }

}

So, wenn ich MyItem aus der zweiten Aktivität mit keine Fehler überhaupt, beide Eigenschaften Id und Beschreibung sind null. Eigentlich ist es ein neues Objekt, da die Neue Eigenschaft true ist. Nun, wenn ich versuche, das Objekt genau nach ich es in der Absicht, in der ersten Aktivität wie das

intent.putExtra("MyItem", (Serializable) item);
MyItem newItem = (MyItem) intent.getSerializableExtra("MyItem");
startActivityForResult(intent, 1);

funktioniert es einwandfrei. newitem verwendet hat all die Eigenschaften mit den korrekten Werten.

Irgendwelche Ideen?

Vielen Dank im Voraus alle!

Object Sie übergeben möchten, als Serializable implementieren Serializable - Schnittstelle.

InformationsquelleAutor pavlospap | 2013-10-06

Schreibe einen Kommentar