在我的Android应用程序中,我有一个图像上传表单,允许用户从库中选择图片。
图库已成功启动,但当我选择图片时,应用程序崩溃并发出npe。奇怪的是,logcat说npe发生在一个没有启动图像选择器的活动中。
所以:
新派对活动启动传单上传活动。
传单上传活动会启动图片选择器以获取结果。
我选择了一个图片,应用程序尝试返回到传单上传活动,但它崩溃并指向新派对活动中的npe。
为什么会这样做?我是通过手机发布的,所以我将在第二篇
中用代码和logcat信息更新这篇文章@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_flyer_upload);
imageView = (ImageView) findViewById(android.R.id.icon);
session = new SessionManager(getApplicationContext());
savedPartyId = session.getCurrentPartyDetails();
//Party service is built to make api calls.
Partyendpoint.Builder partyBuilder = new Partyendpoint.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), null);
partyService = partyBuilder.build();
//get the party you just saved in the last activity
if(savedParty == null){
getSavedParty(savedPartyId);
}
}
public void pickPhoto(View view) {
//TODO: launch the photo picker
Intent picintent = new Intent();
picintent.setType("image/*");
picintent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(picintent,
"Select Picture"), SELECT_PICTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK) {
bitmap = getPath(data.getData());
imageView.setImageBitmap(bitmap);
}
}
logcat info:
03-06 16:12:20.036: E/AndroidRuntime(5366): FATAL EXCEPTION: main
03-06 16:12:20.036: E/AndroidRuntime(5366): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mastermindcode.theincrowd/com.mastermindcode.theincrowd.NewPartyActivity}: java.lang.NullPointerException
03-06 16:12:20.036: E/AndroidRuntime(5366): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
03-06 16:12:20.036: E/AndroidRuntime(5366): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
03-06 16:12:20.036: E/AndroidRuntime(5366): at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-06 16:12:20.036: E/AndroidRuntime(5366): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
03-06 16:12:20.036: E/AndroidRuntime(5366): at android.os.Handler.dispatchMessage(Handler.java:99)
03-06 16:12:20.036: E/AndroidRuntime(5366): at android.os.Looper.loop(Looper.java:137)
03-06 16:12:20.036: E/AndroidRuntime(5366): at android.app.ActivityThread.main(ActivityThread.java:5103)
03-06 16:12:20.036: E/AndroidRuntime(5366): at java.lang.reflect.Method.invokeNative(Native Method)
03-06 16:12:20.036: E/AndroidRuntime(5366): at java.lang.reflect.Method.invoke(Method.java:525)
03-06 16:12:20.036: E/AndroidRuntime(5366): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-06 16:12:20.036: E/AndroidRuntime(5366): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-06 16:12:20.036: E/AndroidRuntime(5366): at dalvik.system.NativeStart.main(Native Method)
03-06 16:12:20.036: E/AndroidRuntime(5366): Caused by: java.lang.NullPointerException
03-06 16:12:20.036: E/AndroidRuntime(5366): at com.mastermindcode.theincrowd.NewPartyActivity.onCreate(NewPartyActivity.java:296)
03-06 16:12:20.036: E/AndroidRuntime(5366): at android.app.Activity.performCreate(Activity.java:5133)
03-06 16:12:20.036: E/AndroidRuntime(5366): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
03-06 16:12:20.036: E/AndroidRuntime(5366): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
03-06 16:12:20.036: E/AndroidRuntime(5366): ... 11 more