我正在开发应用程序,它从图库中读取图像,并成为布局中的背景,我使用了以下代码,但是一旦我单击图片,它就会给我强制关闭错误,这是代码
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),0);
和
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
{
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK && requestCode == 0) {
Uri photo = imageUri;
ContentResolver resolver = getContentResolver();
resolver.notifyChange(photo, null);
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(resolver, photo);
RelativeLayout bg = (RelativeLayout) findViewById(R.id.bg);
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
bg.setBackgroundDrawable(drawable);
//Do something useful with your bitmap
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
主要的.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.92"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.88"
android:orientation="vertical" >
</LinearLayout>
</RelativeLayout>
<Button
android:id="@+id/button"
android:layout_width="143dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Save" />
</LinearLayout>
这是我的错误日志
05-16 20:20:23.768: W/dalvikvm(288): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
05-16 20:20:24.098: E/AndroidRuntime(288): FATAL EXCEPTION: main
05-16 20:20:24.098: E/AndroidRuntime(288): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { dat=content://media/external/images/media/1 }} to activity {org.example.touch/org.example.touch.Touch}: java.lang.NullPointerException
05-16 20:20:24.098: E/AndroidRuntime(288): at android.app.ActivityThread.deliverResults(ActivityThread.java:3515)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.app.ActivityThread.access$2800(ActivityThread.java:125)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.os.Handler.dispatchMessage(Handler.java:99)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.os.Looper.loop(Looper.java:123)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.app.ActivityThread.main(ActivityThread.java:4627)
05-16 20:20:24.098: E/AndroidRuntime(288): at java.lang.reflect.Method.invokeNative(Native Method)
05-16 20:20:24.098: E/AndroidRuntime(288): at java.lang.reflect.Method.invoke(Method.java:521)
05-16 20:20:24.098: E/AndroidRuntime(288): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-16 20:20:24.098: E/AndroidRuntime(288): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-16 20:20:24.098: E/AndroidRuntime(288): at dalvik.system.NativeStart.main(Native Method)
05-16 20:20:24.098: E/AndroidRuntime(288): Caused by: java.lang.NullPointerException
05-16 20:20:24.098: E/AndroidRuntime(288): at android.os.Parcel.readException(Parcel.java:1253)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.os.Parcel.readException(Parcel.java:1235)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.content.IContentService$Stub$Proxy.notifyChange(IContentService.java:458)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.content.ContentResolver.notifyChange(ContentResolver.java:850)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.content.ContentResolver.notifyChange(ContentResolver.java:836)
05-16 20:20:24.098: E/AndroidRuntime(288): at org.example.touch.Touch.onActivityResult(Touch.java:117)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.app.Activity.dispatchActivityResult(Activity.java:3890)
05-16 20:20:24.098: E/AndroidRuntime(288): at android.app.ActivityThread.deliverResults(ActivityThread.java:3511)
05-16 20:20:24.098: E/AndroidRuntime(288): ... 11 more