Maison >Java >javaDidacticiel >Pourquoi est-ce que je reçois une NullPointerException lors de l'accès aux vues dans mon LoginActivity ?
NullPointerException : tentative de récupération du rappel à partir d'une fenêtre non initialisée
Lors de la navigation de SplashActivity à LoginActivity, l'application rencontre une erreur :
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
Cette erreur indique que LoginActivity tente d'accéder à un composant de vue avant lui. a été correctement initialisé.
Cause
La cause spécifique de l'erreur réside dans le code LoginActivity.java, où les membres de la classe sont initialisés avant l'appel de setContentView() dans onCreate(). Cela conduit à une situation dans laquelle les vues n'existent pas encore lorsque les membres de la classe tentent de les trouver.
Solution
Pour résoudre le problème, déclarez les membres de la vue dans la classe sans initialisation :
private EditText usernameField, passwordField; private TextView error; private ProgressBar progress;
Ensuite, initialisez les membres dans onCreate() après que setContentView() ait été appelé :
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); usernameField = (EditText)findViewById(R.id.username); passwordField = (EditText)findViewById(R.id.password); error = (TextView)findViewById(R.id.error); progress = (ProgressBar)findViewById(R.id.progress); }
Conseils supplémentaires
Bien que cela ne soit pas directement lié à l'erreur, il est recommandé de remplacer Timer par Handler lors de l'exécution d'une tâche sur le thread de l'interface utilisateur :
new Handler().postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(SplashActivity.this, LoginActivity.class); startActivity(intent); finish(); } }, 1500);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!