Android: „Versuch, die virtuelle Methode ‚android.view.Window$Callback android.view.Window.getCallback()‘ für eine Nullobjektreferenz aufzurufen“
Beim Navigieren von SplashActivity zu LoginActivity stürzt die App mit der Fehlermeldung „Versuch, eine virtuelle Methode aufzurufen“ ab „android.view.Window$Callback android.view.Window.getCallback()“ für eine Nullobjektreferenz.“ Dieser Fehler tritt normalerweise auf, wenn auf Ansichten zugegriffen oder UI-bezogene Aktionen ausgeführt werden, bevor die Aktivität vollständig initialisiert ist.
In diesem Fall wird der Fehler höchstwahrscheinlich durch das folgende Problem verursacht:
Vorzeitige Initialisierung von Ansichtsfeldern:
In LoginActivity.java werden die Felder „usernameField“, „passwordField“, „error“ und „fortschritt“ deklariert und zugewiesene Werte im Konstruktor. Allerdings wurde die onCreate()-Methode der Aktivität beim Zugriff auf diese Felder noch nicht aufgerufen, was bedeutet, dass setContentView() nicht ausgeführt wurde und die Ansichtshierarchie nicht eingerichtet wurde. Folglich versuchen die Felder, auf nicht vorhandene Ansichten zu verweisen, was zur Nullzeiger-Ausnahme führt.
Lösung:
Um das Problem zu beheben, ist es notwendig Initialisieren Sie die Ansichtsfelder erst, nachdem setContentView() aufgerufen wurde. Dadurch wird sichergestellt, dass die Ansichtshierarchie vollständig initialisiert und zugänglich ist.
Der aktualisierte Code in LoginActivity.java:
private EditText usernameField; private EditText passwordField; private TextView error; private ProgressBar progress; @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ätzlich wird empfohlen, zur Steuerung einen Handler anstelle eines Timers zu verwenden die Navigation von SplashActivity zu LoginActivity, um sicherzustellen, dass sie im UI-Thread auftritt.
Der aktualisierte Code in SplashActivity.java:
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 während der Aktivitätsnavigation mit der Meldung „Versuch, die virtuelle Methode ‚android.view.Window$Callback android.view.Window.getCallback()' für eine Nullobjektreferenz aufzurufen' ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!