Android: Problema com objeto serializável colocado em intenção
-
20-09-2019 - |
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
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.