Rumah >Java >javaTutorial >Mengapa Saya Mendapat NullPointerException Apabila Mengakses Paparan dalam Log Masuk Saya?

Mengapa Saya Mendapat NullPointerException Apabila Mengakses Paparan dalam Log Masuk Saya?

Linda Hamilton
Linda Hamiltonasal
2024-12-07 01:43:12927semak imbas

Why Am I Getting a NullPointerException When Accessing Views in My LoginActivity?

NullPointerException: Mencuba Mendapatkan Panggilan Balik dari Tetingkap Tidak Dimulakan

Apabila menavigasi dari SplashActivity ke LoginActivity, apl menghadapi ralat:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference

Ralat ini menunjukkan bahawa LoginActivity sedang mencuba akses komponen paparan sebelum ia telah dimulakan dengan betul.

Punca

Punca ralat khusus terletak pada kod LoginActivity.java, tempat ahli kelas dimulakan sebelum setContentView() dipanggil dalam onCreate(). Ini membawa kepada situasi di mana pandangan belum wujud lagi apabila ahli kelas cuba mencarinya.

Penyelesaian

Untuk menyelesaikan isu, isytiharkan ahli lihat dalam kelas tanpa permulaan:

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

Kemudian, mulakan ahli dalam onCreate() selepas setContentView() telah dipanggil:

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);
}

Nasihat Tambahan

Walaupun tidak berkaitan secara langsung dengan ralat, adalah disyorkan untuk menggantikan Pemasa dengan Pengendali apabila menjalankan tugas pada urutan UI:

new Handler().postDelayed(new Runnable() {
  @Override
  public void run() {
    Intent intent = new Intent(SplashActivity.this, LoginActivity.class);
    startActivity(intent);
    finish();
  }
}, 1500);

Atas ialah kandungan terperinci Mengapa Saya Mendapat NullPointerException Apabila Mengakses Paparan dalam Log Masuk Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn