Heim >Java >javaLernprogramm >Warum stürzt meine Android-App beim Übergang von Aktivitäten mit der Meldung „Versuch, eine virtuelle Methode aufzurufen … für eine Nullobjektreferenz' ab?
Versuch, virtuelle Methode aufzurufen: Nullobjektreferenz
Problem:
Beim Übergang von Beim Übergang von SplashActivity zu LoginActivity in einer Android-Anwendung kommt es zu einem Absturz mit folgendem Fehler: „Versuch, eine virtuelle Methode aufzurufen „android.view.Window$Callback android.view.Window.getCallback()“ für eine Nullobjektreferenz.“
Erklärung:
Die Ausnahme tritt aufgrund von LoginActivity auf versucht, auf Ansichten (z. B. EditText, TextView) zuzugreifen, bevor die Aktivität vollständig initialisiert und bereit ist. findViewById() wird im Konstruktor von LoginActivity aufgerufen, setContentView(...) wird jedoch nicht explizit in onCreate() aufgerufen.
Lösung:
Um das Problem zu beheben, Initialisieren Sie anschließend die Ansichtsfelder in onCreate() setContentView(...):
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); }
Optimierungsvorschlag:
Erwägen Sie die Verwendung eines Handlers anstelle eines Timers, um den Absichtsübergang zu planen. Ein Timer führt die TimerTask in einem Hintergrundthread aus, was in diesem Fall vermieden werden sollte. Der Handler stellt sicher, dass die 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 stürzt meine Android-App beim Übergang von Aktivitäten mit der Meldung „Versuch, eine virtuelle Methode aufzurufen … für eine Nullobjektreferenz' ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!