2013-02-25 3 views
0

Je reçois une exception nullpointer. La seule chose est, il ne semble pas être là à tous les périphériques, donc est plutôt étrange pour moi ..connecté avec une exception nullpointer

Une idée pourrait être que bitmap src pourrait être nul? Mais puisque je l'initialise devant ce n'est pas possible? J'imagine? Comme il ne se produit pas sur mon appareil, je dois juste être sûr ...

Bitmap bm = BitmapFactory.decodeResource(C.getResources(), resId); 
Bitmap result = mark(bm); 

public static Bitmap mark(Bitmap src) { 
     int w = src.getWidth(); 
     // int w = 150; 
     int h = src.getHeight(); 
     // int h = 150; 
     Bitmap result = Bitmap.createBitmap(w, h, src.getConfig()); 

     Canvas canvas = new Canvas(result); 
     canvas.drawBitmap(src, 0, 0, null); 

     Paint paint = new Paint(); 
     paint.setColor(Color.GRAY); 
     paint.setTypeface(font); 
     paint.setTextSize(15); 
     paint.setAntiAlias(true); 
     canvas.drawText("Hi", 10, 15, paint); 

     return result; 
    } 

Répondre

0

DecodeResources peut retourner null s'il y a un problème avec le décodage. C'est peut-être ce qui est arrivé ici.

+0

Quelle est la meilleure façon de résoudre ce problème? Ajouter un if (src! = Null) {}? Ou peut-être que je peux corriger cette erreur dans le décodage? –

+0

Fixer le décodage serait le meilleur, mais je ne sais pas pourquoi il a échoué. Vous devriez comprendre cela vous-même. Si vous voulez juste vous débarrasser de l'accident rapidement, mettez un if (src! = Null) et vous pouvez éviter le crash. –

+0

Ouais le problème c'est que ça n'arrive pas sur mon propre appareil ... donc difficile pour moi de suivre .. Egalement un problème: si c'est null, le résultat qui sera retourné est inutile bien sûr? –

1

Comme nous n'avons pas la trace de la pile, je suppose que vous obtenez votre exception sur la première ligne de mark(): int w = src.getWidth();.

Cela signifie que src est null. Il est possible que public static Bitmap decodeResource (Resources res, int id) puisse retourner null si l'image ne peut pas être décodée.

Vous devriez donc creuser dans vos ressources disponibles. Peut-être sur l'appareil défectueux, un png est manquant?

+0

Normalement, il n'est pas .. il obtient juste les ressources de l'application elle-même, l'image est utilisée dans l'activité, et cela est utilisé pour le partager et ajoute un filigrane ... Donc, si ce ne serait pas dans les ressources obtiendrait l'erreur sur une autre ligne aussi bien? –

+0

Ok, je demandais parce que parfois, si vous manquez une image dans l'un des dossiers res, vous pourriez obtenir ce genre d'erreur. S'il ne s'agit pas d'une ressource locale, je rechercherais par conséquent la spécificité du matériel susceptible de provoquer un comportement différent. Savez-vous quel périphérique est concerné par ce problème? –

+0

Je dois dire, que dans la version actuelle, il n'a pas le C.getResources() mais juste getResources() ... pourrait ajouter le C. soit la solution? –