Je reçois une erreur en tant qu'exception de pointeur Null et incapable d'instancier l'activité lorsque je crée un toast dans le constructeur d'activité.Je veux savoir la raison pour laquelle les toasts fonctionnent dans la méthode onCreate mais pas dans constructeur d'activitéimpossible de créer un toast dans le constructeur d'activité
Répondre
Le système d'exploitation est responsable de la construction de vos classes Activity
. C'est parce qu'il doit effectuer une certaine configuration, y compris en fournissant le Activity
une base correcte Context
. Sans cela, vous ne pouvez pas faire Toast
s.
En général, vous devriez éviter de faire quoi que ce soit dans le constructeur d'un Activity
(et vous devriez certainement pas formulerai cas de vous-même en utilisant new
).
Généralement, un Toast apparaît comme un retour à l'entrée de l'utilisateur (par exemple, un clic) ou lorsqu'un événement externe est enregistré (par exemple, une erreur réseau se produit ou de nouvelles données entrantes sont disponibles).
Cependant, pour moi, il semble que vous vouliez montrer un Toast juste après avoir ouvert votre activité, est-ce exact? Ensuite, vous devriez le mettre dans la méthode onCreate
de votre activité. Un exemple Toast est fait comme ce
Toast.makeText(MainActivity.this, "Hello World", Toast.LENGTH_LONG).show();
Vous pouvez également envisager de mettre cet appel dans la méthode onResume
. Je recommande de se familiariser avec activity lifecycles.
Au lieu d'utiliser Toasts, vous pouvez également consulter Snackbars.
Je voulais juste tester ce qui se passe si nous utilisons un constructeur d'activité et pourquoi ce n'est pas important – deshmanth
"Je reçois une erreur en tant qu'exception de pointeur Null et incapable d'instancier l'activité lorsque je crée un toast dans le constructeur d'activité" - car vous ne devriez pas avoir de constructeur d'activité. – CommonsWare