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