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?

Warum stürzt meine Android-App beim Übergang von Aktivitäten mit der Meldung „Versuch, eine virtuelle Methode aufzurufen … für eine Nullobjektreferenz' ab?

Linda Hamilton
Linda HamiltonOriginal
2024-12-05 15:22:10884Durchsuche

Why Does My Android App Crash with

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn