Java.lang.RuntimeException: не удается запустить Activity ComponentInfo {…}: java.lang.NullPointerException

Когда вы нажимаете, чтобы перейти от одного действия к другому, у меня есть ошибка:

java.lang.RuntimeException: Unable to start activity ComponentInfo {...}: java.lang.NullPointerException

Мне не хватает какого-то метода? Пожалуйста, помогите мне понять, что я сделал неправильно, поэтому вы видите эту ошибку?

Моя деятельность: Заселение.ява

 import java.util.ArrayList; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.Spinner; public class Zaselenie extends Activity { ContactDBmoy cqh; KvartDB kdb; SQLiteDatabase sdb; private Long rowId; Spinner spZaselenie; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.zaselenie); spZaselenie = (Spinner)findViewById(R.id.spZaselenie); // Инициализируем наш класс-обёртку cqh = new ContactDBmoy(Zaselenie.this); kdb = new KvartDB(Zaselenie.this); // База нам нужна для записи и чтения sdb = cqh.getWritableDatabase(); sdb = kdb.getWritableDatabase(); Bundle extras = getIntent().getExtras(); rowId = extras.getLong(ContactMain.rowId); Cursor cursorKvart = sdb.query(KvartDB.TABLE_NAME, new String[] { KvartDB._ID, KvartDB.NAME_COLUMN }, null, // The // columns // for the // WHERE // clause null, // The values for the WHERE clause null, // don't group the rows null, // don't filter by row groups null // The sort order ); ArrayList<String> labels = new ArrayList<String>(); while (cursorKvart.moveToNext()) { // GET COLUMN INDICES + VALUES OF THOSE COLUMNS int idKvart = cursorKvart.getInt(cursorKvart.getColumnIndex(KvartDB._ID)); String nameKvart = cursorKvart.getString(cursorKvart.getColumnIndex(KvartDB.NAME_COLUMN)); Log.i("LOG_TAG", "ROW " + idKvart + " HAS NAME " + nameKvart); labels.add(nameKvart); // Creating adapter for spinner ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels); // Drop down layout style - list view with radio button dataAdapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); dataAdapter.notifyDataSetChanged(); // attaching data adapter to spinner spZaselenie.setAdapter(dataAdapter); } cursorKvart.close(); } public Zaselenie() { // TODO Auto-generated constructor stub } @Override protected void onResume() { super.onResume(); } @Override protected void onStop() { super.onStop(); // закрываем соединения с базой данных sdb.close(); kdb.close(); } } 

Ошибка Logcat:

 03-06 12:04:43.802: E/AndroidRuntime(20861): FATAL EXCEPTION: main 03-06 12:04:43.802: E/AndroidRuntime(20861): java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.zloyel.manager_sutochnoy_arendy_1/ru.zloyel.manager_sutochnoy_arendy_1.Zaselenie}: java.lang.NullPointerException 03-06 12:04:43.802: E/AndroidRuntime(20861): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 03-06 12:04:43.802: E/AndroidRuntime(20861): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 03-06 12:04:43.802: E/AndroidRuntime(20861): at android.app.ActivityThread.access$600(ActivityThread.java:130) 03-06 12:04:43.802: E/AndroidRuntime(20861): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 03-06 12:04:43.802: E/AndroidRuntime(20861): at android.os.Handler.dispatchMessage(Handler.java:99) 03-06 12:04:43.802: E/AndroidRuntime(20861): at android.os.Looper.loop(Looper.java:137) 03-06 12:04:43.802: E/AndroidRuntime(20861): at android.app.ActivityThread.main(ActivityThread.java:4745) 03-06 12:04:43.802: E/AndroidRuntime(20861): at java.lang.reflect.Method.invokeNative(Native Method) 03-06 12:04:43.802: E/AndroidRuntime(20861): at java.lang.reflect.Method.invoke(Method.java:511) 03-06 12:04:43.802: E/AndroidRuntime(20861): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 03-06 12:04:43.802: E/AndroidRuntime(20861): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 03-06 12:04:43.802: E/AndroidRuntime(20861): at dalvik.system.NativeStart.main(Native Method) 03-06 12:04:43.802: E/AndroidRuntime(20861): Caused by: java.lang.NullPointerException 03-06 12:04:43.802: E/AndroidRuntime(20861): at ru.zloyel.manager_sutochnoy_arendy_1.Zaselenie.onCreate(Zaselenie.java:39) 03-06 12:04:43.802: E/AndroidRuntime(20861): at android.app.Activity.performCreate(Activity.java:5008) 03-06 12:04:43.802: E/AndroidRuntime(20861): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 03-06 12:04:43.802: E/AndroidRuntime(20861): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 03-06 12:04:43.802: E/AndroidRuntime(20861): ... 11 more 

Проверьте, что extras не являются null как null ниже …

 if(extras != null) { rowId = extras.getLong(ContactMain.rowId); } 

Также проверьте, что ваш объект Cursor не равен null, как показано ниже …

 if(cursorKvart != null && cursorKvart.getCount() > 0) { while (cursorKvart.moveToNext()) { ...... } } 

Сначала проверьте вашу rowId не null

А также настройте свой ArrayAdapter вне цикла While()

  ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spZaselenie.setAdapter(dataAdapter); 

Вы должны запустить код в режиме dubug, тогда вы можете легко определить, в какой строке вы получаете нулевой указатель. Я считаю, что лучший способ узнать об исключениях и ошибках.

Кажется, проблема здесь:

 rowId = extras.getLong(ContactMain.rowId); 

Похоже, что extras null

Intereting Posts