Cela me rend fou! Voici mon code (je sais que ce fichier existe):
File imageFile = new File("/sdcard/gallery_photo_4.jpg");
ImageView jpgView = (ImageView)findViewById(R.id.imageView);
BitmapDrawable d = new BitmapDrawable(getResources(), imageFile.getAbsolutePath());
jpgView.setImageDrawable(d);
L'erreur se produit sur cette dernière ligne (ligne 28, référencée ci-dessous).
Sortie d'erreur:
W/dalvikvm( 865): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
E/AndroidRuntime( 865): FATAL EXCEPTION: main
E/AndroidRuntime( 865): Java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.camera/org.example.camera.Imgview}: Java.lang.NullPointerException
E/AndroidRuntime( 865): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2663)
E/AndroidRuntime( 865): at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2679)
E/AndroidRuntime( 865): at Android.app.ActivityThread.access$2300(ActivityThread.Java:125)
E/AndroidRuntime( 865): at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:2033)
E/AndroidRuntime( 865): at Android.os.Handler.dispatchMessage(Handler.Java:99)
E/AndroidRuntime( 865): at Android.os.Looper.loop(Looper.Java:123)
E/AndroidRuntime( 865): at Android.app.ActivityThread.main(ActivityThread.Java:4627)
E/AndroidRuntime( 865): at Java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 865): at Java.lang.reflect.Method.invoke(Method.Java:521)
E/AndroidRuntime( 865): at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:868)
E/AndroidRuntime( 865): at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:626)
E/AndroidRuntime( 865): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 865): Caused by: Java.lang.NullPointerException
E/AndroidRuntime( 865): at org.example.camera.Imgview.onCreate(Imgview.Java:28)
E/AndroidRuntime( 865): at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1047)
E/AndroidRuntime( 865): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2627)
E/AndroidRuntime( 865): ... 11 more
W/ActivityManager( 59): Force finishing activity org.example.camera/.Imgview
Ma mise en page ressemble (probablement pas nécessaire):
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical" Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<ImageView Android:id="@+id/imageView" Android:layout_width="fill_parent"
Android:layout_height="fill_parent" Android:scaleType="center">
</ImageView>
</LinearLayout>
Merci beaucoup pour toute aide.
Je préfère utiliser un BitmapFactory
pour décoder l'image à partir du chemin du fichier:
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
jpgView.setImageBitmap(bitmap);
Les Docs disent:
Si le nom de fichier spécifié est nul ou ne peut pas être décodé en bitmap, la fonction renvoie null.
Pouvez-vous vérifier si le code fonctionne avec une autre image et si vous pouvez ouvrir votre image sur votre PC? Peut-être que le fichier est corrompu.
Ce code a finalement fonctionné pour moi:
setContentView(R.layout.main);
ImageView jpgView = (ImageView)findViewById(R.id.imageView);
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/sample-1.jpg");
jpgView.setImageBitmap(bitmap);
Le crash se produisait car setContentView () n'a pas été exécuté avant de joindre le jpgview:
code qui plantait:
ImageView jpgView = (ImageView)findViewById(R.id.imageView);
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/sample-1.jpg");
jpgView.setImageBitmap(bitmap);
setContentView(R.layout.main);
String imagePath = Environment.getExternalStorageDirectory().toString() + PATH_TO_IMAGE;
return Drawable.createFromPath(imagePath)
UTILISEZ CETTE LIGNE DE CODE POUR OBTENIR UNE IMAGE DE LA SDCARD. ET PUIS L'AFFICHER DANS VOTRE IMAGE
où "FileInputOutput" est un dossier dans votre carte SD
String path = Environment.getExternalStorageDirectory()+ "/FileInputOutput/img1.jpg";
File imgFile = new File(path);
if(imgFile.exists())
{
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imageView1);
myImage.setImageBitmap(myBitmap);
}
else
Toast.makeText(v.getContext(),"no IMAGE IS PRESENT'",Toast.LENGTH_SHORT).show();
}