NullPointerException: Versuch, einen Rückruf aus einem nicht initialisierten Fenster abzurufen
Beim Navigieren von SplashActivity zu LoginActivity tritt in der App ein Fehler auf:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
Dieser Fehler weist darauf hin, dass LoginActivity versucht, zuvor auf eine Ansichtskomponente zuzugreifen wurde ordnungsgemäß initialisiert.
Ursache
Die spezifische Ursache des Fehlers liegt im LoginActivity.java-Code, in dem die Klassenmitglieder initialisiert werden, bevor setContentView() aufgerufen wird onCreate(). Dies führt dazu, dass die Ansichten noch nicht vorhanden sind, wenn die Klassenmitglieder versuchen, sie zu finden.
Lösung
Um das Problem zu beheben, deklarieren Sie die Ansichtsmitglieder in die Klasse ohne Initialisierung:
private EditText usernameField, passwordField; private TextView error; private ProgressBar progress;
Dann initialisieren Sie die Mitglieder in onCreate(), nachdem setContentView() ausgeführt wurde aufgerufen:
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); }
Zusätzlicher Hinweis
Obwohl dies nicht direkt mit dem Fehler zusammenhängt, wird empfohlen, Timer durch Handler zu ersetzen, wenn eine Aufgabe im UI-Thread ausgeführt wird:
new Handler().postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(SplashActivity.this, LoginActivity.class); startActivity(intent); finish(); } }, 1500);
Das obige ist der detaillierte Inhalt vonWarum erhalte ich eine NullPointerException, wenn ich auf Ansichten in meiner LoginActivity zugreife?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!