Pergunta

Olá, tenho problemas com uma aula que quero passar em uma intenção colocando -a no putextras () seu serializável e o código se parece com o seguinte:

public abstract class ObjectA extends ArrayList<ObjectA> implements java.io.Serializable{...}

public class ObjectB extends ObjectA {...}


...
Bundle extras = new Bundle();
extras.putSerializable("blabla", ObjectB);
intent.putExtras(extras);

...

Object y = getIntent().getExtras().get("blabla");

O problema é que Y agora é um Arraylist e não é mais um objeto, então não posso lançá -lo .. se eu mudar o código para

public class ObjectB implements java.io.Serializable {...}

Funciona bem

Foi útil?

Solução

Ao implementar Java.util.list e java.io.Serializable em sua classe, você desencadeou isso Bug Android.

Outras dicas

Suspeito que o que está acontecendo é que, como você não está declarando o objeto como serializável, ele está "caindo de volta" ao objeto pai mais recente que é. Então, quando você o coloca no pacote, você não está realmente colocando o ObjectB, mas o ObjectB voltou ao Arraylist.

Eu acho que você terá que ir com o segundo código ("funciona bem").

Como você está declarando o ObjectB antes de passá -lo para o pacote? Pelo que entendi da sua pergunta, você não está recebendo erro ao passar no pacote, apenas ao removê -lo. Tente recuar seu objeto em um tipo de objeto diretamente assim:

ObjectB y = (ObjectB) getIntent().getExtras().get("blabla");

o ObjectA dentro ArrayList deve implementar a interface Parcelable. Depois disso, você pode colocar seus Arraylists na intenção e colocá -los em outra atividade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top