I have a spinner, which already contains some items. I'm trying to add a new item to it after getting it from another activity by setResult and onActivityResult:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null
{...}
else if(requestCode == GET_NEW_STUDENT_NAME)
{
String name = data.getStringExtra("name");
ArrayAdapter<String> adapter = (ArrayAdapter<String>)studentsSpinner.getAdapter();
adapter.add(name);
studentsSpinner.setAdapter(adapter);
}
}
However, every time the code runs, the activity closes. This exception is being shown:
03-29 19:20:30.925 26953-26953/com.example.user.privatelessons E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.user.privatelessons, PID: 26953 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {com.example.user.privatelessons/com.example.user.privatelessons.AddLessonActivity}: java.lang.NullPointerException: println needs a message at android.app.ActivityThread.deliverResults(ActivityThread.java:4179) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4222) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1581) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6238) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) Caused by: java.lang.NullPointerException: println needs a message at android.util.Log.println_native(Native Method) at android.util.Log.e(Log.java:236) at com.example.user.privatelessons.AddLessonActivity.onActivityResult(AddLessonActivity.java:123) at android.app.Activity.dispatchActivityResult(Activity.java:7121) at android.app.ActivityThread.deliverResults(ActivityThread.java:4175) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4222) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1581) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6238)
[EDIT]: At start, I initialize the spinner with following code:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, db.GetStudentslist());;
spinner.setAdapter(adapter);
GetStudentslist() returns String[].
The following code, which just shows the name in the logcat (without adding it to spinner), works fine:
if(requestCode == GET_NEW_STUDENT_NAME && data != null)
{
String name = data.getStringExtra("name");
/* List<String> names = Arrays.asList(db.GetStudentslist());
names.add(name);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, names);;
studentsSpinner.setAdapter(adapter);*/
Log.e("Name", name);
}
For that Make List<> Variable,ArrayAdapter Globally above onCreate Method.
add defaults items in oncreate Method and configure Arrayadapter for that spinner.
Then in onActivityResult add that new value in List.add("String").
After that add this line.
adapter.notifydatasetchanges();
it will update your data into spinner control.
If need more help i will give attach example here.