1

Je veux créer scalebitmap dans une vue personnalisée et quand je veux ajouter dans une mise en page xml, xml donne une erreur java.lang.NullPointerException et je veux changer certaines lignes, y compris mon scalebitmap dans mon init() à l'intérieur du onSizeChangedFunction(). Mon code est ci-dessous;java.lang.NullPointerException en xml

protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
    super.onSizeChanged(w, h, oldw, oldh); 

    parentWidth=w; 
    parentHeight=h; 
    init();   // <--- This 

    mBitmap=Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
    mCanvas = new Canvas(mBitmap); 
} 

et ma fonction init():

private void init() 
{ 
    for(int i=0 ; i<2; i++) 
    { 
     int imageResources; 
     imageResources=getResources().getIdentifier("rakam"+i, "drawable", myContext.getPackageName()); 
     Bitmap tempBitmap = BitmapFactory.decodeResource(myContext.getResources(), imageResources); 
     --> Bitmap scaledBitmap= Bitmap.createScaledBitmap(tempBitmap, parentWidth, parentHeight, false); 
     rakamlar.add(scaledBitmap); 

    } 
} 

L'erreur pas dans le Logcat, il est dans le éditeur XML l'éclipse. Comment résoudre ce problème?

+0

sont rakam0 et rakam1 les deux drawables? – njzk2

+7

Nullpointers sont faciles à traquer. Utilisez le débogage pour voir ce qui est réellement nul, et corrigez-le à partir de là. Si une méthode renvoie null et que vous ne comprenez pas pourquoi, revenez avec une question plus détaillée. –

+0

L'affichage de votre sortie logcat pourrait rendre cette question plus claire. – Chilledrat

Répondre

0

Seulement une supposition, mais je pense que vous pourriez avoir des ressources qui ne peuvent pas être résolues en mode "edit" sous eclipse. Pour vous aider à dépasser l'erreur immédiate, essayez:

private void init() 
{ 
    for(int i=0 ; i<2; i++) 
    { 
     int imageResources; 
     // I suspect imageResources will be 0 while in edit mode.. 
     imageResources=getResources().getIdentifier("rakam"+i, "drawable", myContext.getPackageName()); 

     if(!isEditMode()) { 
      // Don't access the unavailable resources.. 
      Bitmap tempBitmap = BitmapFactory.decodeResource(myContext.getResources(), imageResources); 
      Bitmap scaledBitmap= Bitmap.createScaledBitmap(tempBitmap, parentWidth, parentHeight, false); 
      rakamlar.add(scaledBitmap); 
     } 

    } 
} 
Questions connexes