Pasar objeto serializable a través de la intención.

Este es mi primer intento de pedir una solución a un problema mío, ¡así que trata de ser amable! He encontrado numerosas soluciones a los problemas con los que trato en este sitio haciendo una búsqueda simple, pero esta vez no tuve suerte, supongo. No encontré nada que se adaptara a mi problema, así que terminé de hacer una nueva pregunta.

Estoy tratando de pasar un objeto a través de un intento de una actividad a otra. Tengo una clase abstracta y dos subclases (la una de ellas también abstracta) como sigue. Necesito que sean abstractos. Eliminé una gran cantidad de código (métodos abstractos, etc.) solo para encontrar cuál es el problema y terminé con estas clases realmente simples y todavía tengo el mismo problema.

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

}

Tengo dos Actividades, ActividadA con un botón para llamar a ActividadB de la siguiente manera.

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

}

Entonces, cuando recibo MyItem de la segunda actividad, sin errores, las propiedades Id y Description son nulas. En realidad, es un nuevo objeto porque la nueva propiedad es verdadera. Ahora, si trato de obtener el objeto exactamente después de ponerlo en la intención en la primera Actividad, así

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

funciona bien. newItem tiene todas las propiedades con los valores correctos.

¿Algunas ideas?

Gracias de antemano a todos!

Respuestas a la pregunta(1)

Su respuesta a la pregunta