Android开发之一个未解决的bug
使用Activity之间传递数据的时候,出现了一个bug,但是没有找到哪里出错了。
把代码和log都记录下来,以后研究
代码:
MainActivity.class
1 package com.example.caradviser; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import android.app.Activity; 7 import android.content.Intent; 8 import android.net.Uri; 9 import android.os.Bundle; 10 import android.util.Log; 11 import android.view.View; 12 import android.view.Window; 13 import android.widget.Spinner; 14 import android.widget.TextView; 15 import android.widget.Toast; 16 17 public class MainActivity extends Activity { 18 19 private static final String TAG = "com.example.caradviser"; 20 TextView showBackText; 21 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 requestWindowFeature(Window.FEATURE_NO_TITLE); 26 setContentView(R.layout.activity_main); 27 showBackText=(TextView) findViewById(R.id.backMainActivity); 28 } 29 30 @Override 31 protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 32 super.onActivityResult(requestCode, resultCode, intent); 33 34 switch (requestCode) { 35 case 123123: 36 if (resultCode==RESULT_OK) { 37 if (intent==null||"".equals(intent)) { 38 Toast.makeText(MainActivity.this, "获取到的数据为空", Toast.LENGTH_SHORT).show(); 39 }else { 40 String getData = intent.getStringExtra("data_return"); 41 showBackText.setText(intent.getStringExtra("data_return")); 42 } 43 } 44 break; 45 46 default: 47 break; 48 } 49 } 50 51 52 public void toAnotherActivity3(View v){ 53 String data ="Hello,这是传递的数据"; 54 Intent intent = new Intent(MainActivity.this,ThreeActivity.class); 55 intent.putExtra("haha", data); 56 startActivityForResult(intent, 123123); 57 } 58 }
ThreeActivity.class
1 package com.example.caradviser; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.text.TextUtils; 7 import android.view.View; 8 import android.view.View.OnClickListener; 9 import android.view.Window; 10 import android.widget.Button; 11 import android.widget.TextView; 12 import android.widget.Toast; 13 14 public class ThreeActivity extends Activity { 15 16 private Button backToMainActivity; 17 private String data; 18 private TextView textView; 19 20 @Override 21 protected void onCreate(Bundle savedInstanceState) { 22 // TODO Auto-generated method stub 23 super.onCreate(savedInstanceState); 24 requestWindowFeature(Window.FEATURE_NO_TITLE); 25 setContentView(R.layout.three_layout); 26 27 Intent intent = getIntent(); 28 data = intent.getStringExtra("haha"); 29 30 textView = (TextView) findViewById(R.id.showText); 31 32 if (TextUtils.isEmpty(data)) { 33 Toast.makeText(ThreeActivity.this, "没有接收到其他activity的数据", Toast.LENGTH_SHORT).show(); 34 }else { 35 textView.setText(data); 36 } 37 38 39 backToMainActivity = (Button) findViewById(R.id.backMainActivity); 40 backToMainActivity.setOnClickListener(new OnClickListener() { 41 42 @Override 43 public void onClick(View v) { 44 // TODO Auto-generated method stub 45 Intent intent = new Intent(); 46 String data3= "将要返回到MainActivity"; 47 intent.putExtra("data_return", data3); 48 setResult(RESULT_OK,intent); 49 finish(); 50 } 51 }); 52 } 53 54 }
Log
1 10-12 16:22:02.304: E/AndroidRuntime(16265): FATAL EXCEPTION: main 2 10-12 16:22:02.304: E/AndroidRuntime(16265): Process: com.example.caradviser, PID: 16265 3 10-12 16:22:02.304: E/AndroidRuntime(16265): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=123123, result=-1, data=Intent { (has extras) }} to activity {com.example.caradviser/com.example.caradviser.MainActivity}: java.lang.NullPointerException 4 10-12 16:22:02.304: E/AndroidRuntime(16265): at android.app.ActivityThread.deliverResults(ActivityThread.java:3375) 5 10-12 16:22:02.304: E/AndroidRuntime(16265): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3418) 6 10-12 16:22:02.304: E/AndroidRuntime(16265): at android.app.ActivityThread.access$1300(ActivityThread.java:141) 7 10-12 16:22:02.304: E/AndroidRuntime(16265): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1261) 8 10-12 16:22:02.304: E/AndroidRuntime(16265): at android.os.Handler.dispatchMessage(Handler.java:102) 9 10-12 16:22:02.304: E/AndroidRuntime(16265): at android.os.Looper.loop(Looper.java:136) 10 10-12 16:22:02.304: E/AndroidRuntime(16265): at android.app.ActivityThread.main(ActivityThread.java:5072) 11 10-12 16:22:02.304: E/AndroidRuntime(16265): at java.lang.reflect.Method.invokeNative(Native Method) 12 10-12 16:22:02.304: E/AndroidRuntime(16265): at java.lang.reflect.Method.invoke(Method.java:515) 13 10-12 16:22:02.304: E/AndroidRuntime(16265): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 14 10-12 16:22:02.304: E/AndroidRuntime(16265): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 15 10-12 16:22:02.304: E/AndroidRuntime(16265): at dalvik.system.NativeStart.main(Native Method) 16 10-12 16:22:02.304: E/AndroidRuntime(16265): Caused by: java.lang.NullPointerException 17 10-12 16:22:02.304: E/AndroidRuntime(16265): at com.example.caradviser.MainActivity.onActivityResult(MainActivity.java:42) 18 10-12 16:22:02.304: E/AndroidRuntime(16265): at android.app.Activity.dispatchActivityResult(Activity.java:5441) 19 10-12 16:22:02.304: E/AndroidRuntime(16265): at android.app.ActivityThread.deliverResults(ActivityThread.java:3371) 20 10-12 16:22:02.304: E/AndroidRuntime(16265): ... 11 more
具体什么原因造成的,目前我还无法确定,等待能力提高以后,回头看看这个问题。
直面挑战,躬身入局