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
Lepaskan: 2024-12-07 01:43:12
asal
875 orang telah melayarinya

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
Salin selepas log masuk

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;
Salin selepas log masuk

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);
}
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan