NullPointerException:嘗試從未初始化的視窗檢索回呼
從SplashActivity 導覽到LoginActivity 時,應用程式遇到錯誤:
從SplashActivity 導覽到LoginActivity 時,應用程式遇到錯誤:Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
原因
錯誤的具體原因在於 LoginActivity.java 程式碼中,其中類別成員在 onCreate() 中呼叫 setContentView() 之前初始化。這會導致類別成員嘗試尋找視圖時視圖尚不存在的情況。解決方案
要解決此問題,請在以下位置聲明視圖成員沒有初始化的類別:private EditText usernameField, passwordField; private TextView error; private ProgressBar progress;
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); }
其他建議
雖然與錯誤沒有直接關係,但建議在UI 執行緒上執行任務時將Timer 替換為Handler :new Handler().postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(SplashActivity.this, LoginActivity.class); startActivity(intent); finish(); } }, 1500);
以上是為什麼在存取 LoginActivity 中的視圖時出現 NullPointerException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!