2 votes

getSerializableExtra() est nul au hasard

Il y a un lien dans une activité, après avoir cliqué dessus, il ouvre une autre activité. J'ajoute un enum pour la deuxième activité.

@Override
protected void onCreate(Bundle savedInstanceState) {
    binding.myLink.setOnClickListener(new View.OnClickListener() {
        // ...
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivityContext(), SecondActivity.class);
                intent.putExtra(KEY, MyEnum.ENUM_VALUE);
                startActivity(intent);
            }
        });
        // ...
}

Dans le onCreate de la seconde activité, je lis ce paramètre

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...
    // get value
    FirstActivity.MyEnum value = (FirstActivity.MyEnum ) getIntent()
            .getSerializableExtra(AboutActivity.KEY);

    // ...
}

Tout fonctionne mais dans Crashlytics je vois que pour certains utilisateurs la valeur est null . La deuxième activité n'est appelée qu'à partir de la première et de nulle part ailleurs.

Quelqu'un peut-il me suggérer le scénario de ce comportement ? Quand cela peut-il se produire ?

J'ai ouvert mon application, ouvert la deuxième activité et mis l'application en arrière-plan. Après plusieurs heures, j'ai ouvert mon application à partir de la liste des applications et tout va bien. Je ne sais plus quand cela peut arriver.

-1voto

mostafa3dmax Points 336

Utiliser ce :

     @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivityContext(), SecondActivity.class);
            Bundle bundle=new Bundle();
            bundle.putSerializable(serializableKEY,yourSerializableClass);
                intent.putExtras(KEY, bundle);
                startActivity(intent);
            }
        });

et en deuxième activité :

Bundle bundle=getIntent().getExtras();
yourSerializableClass clazz=(yourSerializableClass)bundle.getSerializable(serializableKEY);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X