Heim >Java >javaLernprogramm >Warum erhalte ich in Android die Meldung „Versuch, die virtuelle Methode ‚android.view.Window$Callback android.view.Window.getCallback()' für eine Nullobjektreferenz aufzurufen'?

Warum erhalte ich in Android die Meldung „Versuch, die virtuelle Methode ‚android.view.Window$Callback android.view.Window.getCallback()' für eine Nullobjektreferenz aufzurufen'?

Barbara Streisand
Barbara StreisandOriginal
2024-12-09 14:10:151021Durchsuche

Why Do I Get

„Versuch, die virtuelle Methode 'android.view.Window$Callback android.view.Window.getCallback()' für eine Nullobjektreferenz aufzurufen“ in Android

Dieser Fehler tritt auf, wenn eine Aktivität versucht, auf Ansichten zuzugreifen, bevor sie vollständig initialisiert wurde. Konkret wird der Fehler ausgelöst, wenn die Window.getCallback()-Methode für ein Nullobjekt aufgerufen wird, was passieren kann, wenn die setContentView()-Methode noch nicht in onCreate() aufgerufen wurde.

Ursache :
Um diesen Fehler zu verhindern, ist es wichtig, Ansichtsfelder zu deklarieren, ohne sie in der Klasse zu initialisieren Deklaration:

private EditText usernameField, passwordField;
private TextView error;
private ProgressBar progress;

Dann weisen Sie diesen Feldern innerhalb von onCreate() Werte zu, nachdem setContentView() aufgerufen wurde:

@Override
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:

  • Erwägen Sie die Verwendung eines Handlers zum Ausführen von Code im UI-Thread anstelle eines Timers, da Timer Aufgaben auf einem ausführen Hintergrundthread.
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 in Android die Meldung „Versuch, die virtuelle Methode ‚android.view.Window$Callback android.view.Window.getCallback()' für eine Nullobjektreferenz aufzurufen'?. 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