2016-01-03 3 views
0

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é

+0

"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

Répondre

1

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).

+0

est le contexte d'activité construit dans le constructeur d'activité – deshmanth

+0

@deshmanth Non. En général, il est préférable de ne pas avoir de constructeur du tout et de reporter toute configuration à 'onCreate()', pour éviter toute confusion. – Karakuri

0

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.

+0

Je voulais juste tester ce qui se passe si nous utilisons un constructeur d'activité et pourquoi ce n'est pas important – deshmanth