Memahami Ralat: "Percubaan untuk Mendapat Kaedah Maya '...' pada Rujukan Objek Null"
Apabila cuba menavigasi dari SplashActivity ke LoginActivity, aplikasi ranap dengan perkara berikut ralat:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
Punca Masalah:
Ralat menunjukkan bahawa rujukan kepada objek Java mengembalikan null, menghalang pelaksanaan operasi yang memerlukan objek yang sah. Dalam kes ini, ia berkaitan dengan pemulaan elemen paparan dalam kod LoginActivity.java.
Penyelesaian:
Penyelesaian terletak pada permulaan elemen paparan dengan betul sebelum merujuk mereka dalam kod. Jawapan yang diberikan dengan betul mengenal pasti bahawa memulakan elemen paparan di luar onCreate() boleh membawa kepada rujukan nol.
Untuk menyelesaikan isu ini, isytiharkan medan paparan dalam LoginActivity.java tanpa pengamulaan, sebagai berikut:
private EditText usernameField, passwordField; private TextView error; private ProgressBar progress;
Kemudian, tetapkan nilai pada medan dalam onCreate() kaedah:
@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); }
Pengoptimuman Tambahan:
Seperti yang dicadangkan dalam jawapan, menggunakan Handler dan bukannya Pemasa untuk menjadualkan peralihan daripada SplashActivity kepada LoginActivity ialah amalan terbaik yang disyorkan, kerana ia memastikan pelaksanaan pada urutan UI, mengelakkan isu yang berpotensi dan memastikan pengalaman pengguna yang lebih lancar.
Atas ialah kandungan terperinci Mengapa Apl Android Saya Ranap dengan 'Percubaan untuk Menggunakan Kaedah Maya '...' pada Rujukan Objek Null' Apabila Menavigasi Antara Aktiviti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!