【发布时间】:2019-08-20 17:00:33
【问题描述】:
我有一个微调器,其中已经包含一些项目。在通过 setResult 和 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);
}
}
但是,每次代码运行时,活动都会关闭。正在显示此异常:
03-29 19:20:30.925 26953-26953/com.example.user.privatelessons E/AndroidRuntime: FATAL EXCEPTION: main 进程:com.example.user.privatelessons,PID:26953 java.lang.RuntimeException:将结果 ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} 传递到活动 {com.example.user.privatelessons/com.example.user 失败.privatelessons.AddLessonActivity}:java.lang.NullPointerException:println 需要一条消息 在 android.app.ActivityThread.deliverResults(ActivityThread.java:4179) 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:4222) 在 android.app.ActivityThread.-wrap20(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1581) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:163) 在 android.app.ActivityThread.main(ActivityThread.java:6238) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 引起:java.lang.NullPointerException: println 需要一条消息 在 android.util.Log.println_native(本机方法) 在 android.util.Log.e(Log.java:236) 在 com.example.user.privatelessons.AddLessonActivity.onActivityResult(AddLessonActivity.java:123) 在 android.app.Activity.dispatchActivityResult(Activity.java:7121) 在 android.app.ActivityThread.deliverResults(ActivityThread.java:4175) 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:4222) 在 android.app.ActivityThread.-wrap20(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1581) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:163) 在 android.app.ActivityThread.main(ActivityThread.java:6238)
[编辑]:开始时,我使用以下代码初始化微调器:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, db.GetStudentslist());;
spinner.setAdapter(adapter);
GetStudentslist() 返回 String[]。
以下代码仅在 logcat 中显示名称(未将其添加到微调器),工作正常:
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);
}
【问题讨论】:
-
显示设置微调器的代码
-
还有你的数据和适配器
-
@gogolon 请添加完整的例外,而不仅仅是一行。
-
@gogolon 请添加
onActivityResult()方法的全部内容。
标签: java android spinner adapter