java.lang.RuntimeException: Unable to start activity ComponentInfo {...}: java.lang.NullPointerException
31,107
Solution 1
Check that extras
isn't null
as below...
if(extras != null) {
rowId = extras.getLong(ContactMain.rowId);
}
Also check that your Cursor
object isn't null as below...
if(cursorKvart != null && cursorKvart.getCount() > 0) {
while (cursorKvart.moveToNext()) {
......
}
}
Solution 2
First check your rowId
not null
And also setup your ArrayAdapter
outside While()
loop
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);
Solution 3
You should run you code in dubug mode then you can easily identify that in which line you are getting null pointer. I thing it is best way to find out exception and error.
Author by
Zloyel
Updated on March 07, 2020Comments
-
Zloyel about 4 years
when you click to go from one activity to another, I have an error:
java.lang.RuntimeException: Unable to start activity ComponentInfo {...}: java.lang.NullPointerException
I am missing some method? Please help me to understand what I did wrong, which is why you see this error?
My activity: Zaselenie.java
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 error:
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