Przekaż obiekt, który można poddać serializacji

To moja pierwsza próba poproszenia o rozwiązanie mojego problemu, więc bądźcie dobrzy! Znalazłem wiele rozwiązań problemów, z którymi mam do czynienia na tej stronie, wykonując proste wyszukiwanie, ale tym razem nie miałem szczęścia. Nie znalazłem nic, co pasowałoby do mojego problemu, więc zakończyłem zadawanie nowego pytania.

Usiłuję przekazać obiekt za pomocą zamiaru z jednego działania na drugie. Mam jedną klasę abstrakcyjną i dwie podklasy (jedna z nich również abstrakcyjna) w następujący sposób. Muszę, żeby były abstrakcyjne. Usunąłem dużo kodu (abstrakcyjne metody itp.) Tylko po to, aby dowiedzieć się, na czym polega problem, i skończyło się na tych naprawdę prostych klasach i nadal mam ten sam 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();
    }

}

Mam dwie aktywności, ActivityA z przyciskiem, aby zadzwonić do ActivityB w następujący sposób.

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());
    }

}

Więc kiedy otrzymuję MyItem z drugiego działania, bez żadnych błędów, zarówno właściwości Id i Opis są zerowe. Właściwie jest to nowy obiekt, ponieważ właściwość Nowa jest prawdziwa. Teraz, jeśli spróbuję uzyskać obiekt dokładnie po tym, jak umieściłem go w zamiarze pierwszego działania w ten sposób

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

to działa dobrze. newItem ma wszystkie właściwości z poprawnymi wartościami.

Jakieś pomysły?

Dzięki z góry wszystkim!

questionAnswers(1)

yourAnswerToTheQuestion