2014-03-04 52 views
0

第一个活动(classDetails.class)OnActivityResult返回谁= NULL错误

//传递addStudent按钮

   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):
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

什么是你'ClassDetails.java'行号133? –

回答

0

试试这个..

 Intent returnIntent = getIntent(); 
     returnIntent.putExtra("name", studentName); 
     returnIntent.putExtra("number", studentN); 

     setResult(RESULT_OK, returnIntent); 
0

使用同样的意图,第二个活动像波纹管

  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); 
} 
0

替换这些行

String studentName = data.getExtras().getString("name"); 
       String studentNum = data.getExtras().getString("number"); 

随着

String studentName = data.getStringExtra("name"); 
       String studentNum = data.getStringExtra("number"); 
相关问题