Rumah > Java > javaTutorial > Mengapa Apl Android Saya Ranap dengan 'Percubaan untuk menggunakan kaedah maya 'android.view.Window$Callback android.view.Window.getCallback()' pada rujukan objek nol' Semasa Navigasi Aktiviti?

Mengapa Apl Android Saya Ranap dengan 'Percubaan untuk menggunakan kaedah maya 'android.view.Window$Callback android.view.Window.getCallback()' pada rujukan objek nol' Semasa Navigasi Aktiviti?

Mary-Kate Olsen
Lepaskan: 2024-12-05 03:42:17
asal
1000 orang telah melayarinya

Why Does My Android App Crash with

Android: "Percubaan untuk menggunakan kaedah maya 'android.view.Window$Callback android.view.Window.getCallback()' pada rujukan objek nol"

Apabila menavigasi dari SplashActivity ke LoginActivity, apl ranap dengan ralat "Cuba untuk menggunakan kaedah maya 'android.view.Window$Callback android.view.Window.getCallback()' pada rujukan objek nol." Ralat ini biasanya berlaku apabila mengakses paparan atau melakukan tindakan berkaitan UI sebelum Aktiviti dimulakan sepenuhnya.

Dalam kes ini, ralat kemungkinan besar disebabkan oleh isu berikut:

Permulaan pramatang medan paparan:

Dalam LoginActivity.java, usernameField, passwordField, ralat, dan medan kemajuan diisytiharkan dan diberikan nilai dalam pembina. Walau bagaimanapun, kaedah onCreate() Aktiviti belum lagi dipanggil apabila medan ini diakses, bermakna setContentView() belum dilaksanakan dan hierarki paparan belum disediakan. Akibatnya, medan cuba merujuk kepada pandangan yang tidak wujud, mengakibatkan pengecualian penuding nol.

Penyelesaian:

Untuk menyelesaikan isu itu, adalah perlu untuk mulakan medan paparan hanya selepas setContentView() dipanggil. Ini memastikan hierarki paparan dimulakan sepenuhnya dan boleh diakses.

Kod yang dikemas kini dalam 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);
}
Salin selepas log masuk

Selain itu, disyorkan untuk menggunakan Pengendali dan bukannya Pemasa untuk mengawal navigasi daripada SplashActivity ke LoginActivity untuk memastikan ia berlaku pada urutan UI.

Kod yang dikemas kini dalam SplashActivity.java:

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 Apl Android Saya Ranap dengan 'Percubaan untuk menggunakan kaedah maya 'android.view.Window$Callback android.view.Window.getCallback()' pada rujukan objek nol' Semasa Navigasi Aktiviti?. 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