Bonjour,

Je m'en remets à vous car j'ai un problème j'essaie de sauvegarder l'image contenue de l'ImageView nommé avatar dans la carte sd du téléphone.
Dans le but de pouvoir la récupérer l'image dans une autre activité.

Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
private void  createImageFile() {
 
        BitmapDrawable draw = (BitmapDrawable) avatar.getDrawable();
        Bitmap bitmap = draw.getBitmap();
        try {
            FileOutputStream outStream = null;
            File sdCard = Environment.getExternalStorageDirectory();
            File dir = new File(sdCard.getAbsolutePath() + "/test");
            dir.mkdirs();
            String fileName = String.format("%d.jpg", System.currentTimeMillis());
            File outFile = new File(dir, fileName);
            outStream = new FileOutputStream(outFile);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
            outStream.flush();
            outStream.close();
 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 }
Le problème est que j'ai ce message d'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
java.lang.IllegalStateException: Could not execute method for android:onClick
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
        at android.view.View.performClick(View.java:6597)
        at android.view.View.performClickInternal(View.java:6574)
        at android.view.View.access$3100(View.java:778)
        at android.view.View$PerformClick.run(View.java:25885)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
        at android.view.View.performClick(View.java:6597)*
        at android.view.View.performClickInternal(View.java:6574)*
        at android.view.View.access$3100(View.java:778)*
        at android.view.View$PerformClick.run(View.java:25885)*
        at android.os.Handler.handleCallback(Handler.java:873)*
        at android.os.Handler.dispatchMessage(Handler.java:99)*
        at android.os.Looper.loop(Looper.java:193)*
        at android.app.ActivityThread.main(ActivityThread.java:6669)*
        at java.lang.reflect.Method.invoke(Native Method)*
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)*
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)*
     Caused by: java.lang.ClassCastException: android.graphics.drawable.AdaptiveIconDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
        at fr.centos.app1.MainActivity.createImageFile(MainActivity.java:197)
        at fr.centos.app1.MainActivity.ajouterPersonne(MainActivity.java:167)
        at java.lang.reflect.Method.invoke(Native Method)*
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)*
        at android.view.View.performClick(View.java:6597)*
        at android.view.View.performClickInternal(View.java:6574)*
        at android.view.View.access$3100(View.java:778)*
        at android.view.View$PerformClick.run(View.java:25885)*
        at android.os.Handler.handleCallback(Handler.java:873)*
        at android.os.Handler.dispatchMessage(Handler.java:99)*
        at android.os.Looper.loop(Looper.java:193)*
        at android.app.ActivityThread.main(ActivityThread.java:6669)*
        at java.lang.reflect.Method.invoke(Native Method)*
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)*
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)*
D'après Android Studio l'erreur vient de cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
BitmapDrawable draw = (BitmapDrawable) avatar.getDrawable();
Si quelqu'un a une idée de comment régler le problème ou une autre solution pour récupérer l'image je suis preneur.

Merci.