Android: Afficher une Image à partir de la CARTE SD
Cela me conduire 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 la dernière ligne (ligne 28, référencé 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.
A u essayez de vérifier que le fichier a été lu après cette ligne: Fichier imageFile = new File("/sdcard/gallery_photo_4.jpg"); juste essayer d'impression de la taille du fichier?
imageFile.length() retourne 4663
imageFile.length() retourne 4663
OriginalL'auteur kmurph79 | 2011-07-17
Vous devez vous connecter pour publier un commentaire.
Je préfère utiliser un
BitmapFactory
pour décoder l'Image à partir du fichier chemin d'accès:Les Docs disent:
Pouvez-vous vérifier si le code fonctionne avec une autre image et si vous pouvez ouvrir votre image sur votre PC de la pensée. Peut-être que le fichier est corrompu.
J'ai mis à jour mon post, s'il vous plaît vérifier cette chose.
merci encore. J'ai poussé une nouvelle image, et il m'a donné le même message d'erreur. Je devrais obtenir un téléphone android bientôt pour le test, je suis curieux de savoir si il va y travailler. C'est tellement frustrant!
Quelle version d'Android fonctionne sur votre Émulateur?
Désolé pour la réponse tardive, je suis en cours d'exécution sur 2.2
OriginalL'auteur Lukas Knuth
Ce code a fonctionné pour moi enfin:
Crash qui se passait parce que setContentView() n'a pas été effectué avant de fixer le jpgview:
code qui a été s'écraser:
OriginalL'auteur rptr87
OriginalL'auteur Londeren
UTILISER CETTE LIGNE DE CODE POUR OBTENIR L'IMAGE À PARTIR DE LA CARTE SD. ET PUIS L'AFFICHER DANS VOTRE IMAGEVIEW
où "FileInputOutput" est un dossier dans votre sdcard
ok je vais le faire! Mais je l'ai fait seul, de sorte que l'utilisateur puisse trouver, il est facile, en tant que débutant, je suis à l'apprentissage de trop ici ... Merci pour le conseille
Je pense qu'il n'y a pas de problème pour poster une réponse à de multiples questions dans le cas où la réponse ne correspond pas aux questions. Je pense que vous êtes très aimable et correct de poster votre réponse ici. Merci @Pir Fahim Shah. Et je pense que vous pouvez ignorer la suggestion de George Stocker.
Merci pour l'appréciation de moi, oui j'ai la même idée, que ce forum est uniquement sur le point d'obtenir une solution de votre problème donc ce n'est pas un danger si je vais poster la réponse à de nombreuses questions qui correspondent à la qualité de la question.
LOL, ouais, en fait, dans le passé, j'ai été critiqué pour mon travail précieux
OriginalL'auteur Pir Fahim Shah