第一个活动(classDetails.class)
// addStudent Button
Button addStudent = (Button) this.findViewById(R.id.addStudent2);
addStudent.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//on click, start activity for result
Intent addStudent = new Intent(ClassDetails.this, AddStudent.class);
addStudent.putExtra("position", classPosition);
startActivityForResult(addStudent,3);
}
});
}
第二个活动(addStudent.class): //保存按钮
Button save = (Button) findViewById(R.id.saveButton1);
save.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//get student name
studentName = inputName.getText().toString();
//convert classID to int and check if entry is a number
try {
studentNum = Integer.parseInt(inputID.getText().toString());
} catch(NumberFormatException nfe) {
Context context = getApplicationContext();
CharSequence text = "Please Enter a Number";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
//use studentNum as string
studentN = Integer.toString(studentNum);
Intent returnIntent = new Intent();
returnIntent.putExtra("name", studentName);
returnIntent.putExtra("number", studentN);
setResult(RESULT_OK, returnIntent);
Log.d(TAG, "rusult OK set");
finish();
}
});
第一个活动(classDetails.class): //从Add Student
获取活动结果protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 3) {
if(resultCode == RESULT_OK){
Log.d(TAG, "classDetail result from addStudent OK");
String studentName = data.getExtras().getString("name");
String studentNum = data.getExtras().getString("number");
//convert studentNum to int
int studentN = Integer.parseInt(studentNum);
//add student to database
myData = DataStore.getInstance();
ArrayList<Student> studentList = myData.getClassArray().get(classPosition).getList();
Student newStudent = new Student();
newStudent.setInputName(studentName);
newStudent.setInputID(studentN);
studentList.add(newStudent);
updateStudentList(classPosition, newStudent.getInputName());
//student added toast
Context context = getApplicationContext();
CharSequence text = studentName + " Added";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
if (resultCode == RESULT_CANCELED) {
Context context = getApplicationContext();
CharSequence text = "No Student Added";
int duration = Toast.LENGTH_SHORT;
//Set listView
classView = (ListView) findViewById(R.id.list);
adapterClass = new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, studentNames);
classView.setAdapter(adapterClass);
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
}//onActivityResult
logcat的:
03-04 00:35:19.109: E/AndroidRuntime(2883): FATAL EXCEPTION: main
03-04 00:35:19.109: E/AndroidRuntime(2883): Process: com.example.classorganizer, PID: 2883
03-04 00:35:19.109: E/AndroidRuntime(2883): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=3, result=-1, data=Intent { (has extras) }} to activity {com.example.classorganizer/com.example.classorganizer.ClassDetails}: java.lang.NullPointerException
03-04 00:35:19.109: E/AndroidRuntime(2883): at android.app.ActivityThread.deliverResults(ActivityThread.java:3365)
03-04 00:35:19.109: E/AndroidRuntime(2883): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3408)
03-04 00:35:19.109: E/AndroidRuntime(2883): at android.app.ActivityThread.access$1300(ActivityThread.java:135)
03-04 00:35:19.109: E/AndroidRuntime(2883): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
03-04 00:35:19.109: E/AndroidRuntime(2883): at android.os.Handler.dispatchMessage(Handler.java:102)
03-04 00:35:19.109: E/AndroidRuntime(2883): at android.os.Looper.loop(Looper.java:136)
03-04 00:35:19.109: E/AndroidRuntime(2883): at android.app.ActivityThread.main(ActivityThread.java:5017)
03-04 00:35:19.109: E/AndroidRuntime(2883): at java.lang.reflect.Method.invokeNative(Native Method)
03-04 00:35:19.109: E/AndroidRuntime(2883): at java.lang.reflect.Method.invoke(Method.java:515)
03-04 00:35:19.109: E/AndroidRuntime(2883): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-04 00:35:19.109: E/AndroidRuntime(2883): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-04 00:35:19.109: E/AndroidRuntime(2883): at dalvik.system.NativeStart.main(Native Method)
03-04 00:35:19.109: E/AndroidRuntime(2883): Caused by: java.lang.NullPointerException
03-04 00:35:19.109: E/AndroidRuntime(2883): at com.example.classorganizer.ClassDetails.onActivityResult(ClassDetails.java:133)
03-04 00:35:19.109: E/AndroidRuntime(2883): at android.app.Activity.dispatchActivityResult(Activity.java:5423)
03-04 00:35:19.109: E/AndroidRuntime(2883): at android.app.ActivityThread.deliverResults(ActivityThread.java:3361)
03-04 00:35:19.109: E/AndroidRuntime(2883): ... 11 more
答案 0 :(得分:0)
试试这个..
Intent returnIntent = getIntent();
returnIntent.putExtra("name", studentName);
returnIntent.putExtra("number", studentN);
setResult(RESULT_OK, returnIntent);
答案 1 :(得分:0)
在第二项活动中使用与bellow相同的意图
Intent myLocalIntent= getIntent();
// look into the bundle sent to Activity2 for data items
Bundle myBundle= myLocalIntent.getExtras();
Double v1 = myBundle.getDouble("val1");
Double v2 = myBundle.getDouble("val2");
// operate on the input data
Double vResult= v1 + v2;
// for illustration purposes. show data received & result
dataReceived.setText("Data received is \n"
+ "val1= "+ v1 + "\nval2= "+ v2
+ "\n\nresult= "+ vResult);
// add to the bundle the computed result
myBundle.putDouble("vresult", vResult);
// attach updated bumble to invoking intent
myLocalIntent.putExtras(myBundle);
// return sending an OK signal to calling activity
setResult(Activity.RESULT_OK, myLocalIntent);
finish();
在第一次活动中,按照以下方式获取值
super.onActivityResult(requestCode, resultCode, data);
try{
if((requestCode== 101 ) && (resultCode== Activity.RESULT_OK)){
Bundle myResults= data.getExtras();
Double vresult= myResults.getDouble("vresult");
lblResult.setText("Sum is "+ vresult);
}
答案 2 :(得分:0)
替换这些行
String studentName = data.getExtras().getString("name");
String studentNum = data.getExtras().getString("number");
使用
String studentName = data.getStringExtra("name");
String studentNum = data.getStringExtra("number");