2012-05-19 3 views
0

J'ai une fenêtre pop-up dont je veux afficher une image et deux boutons. Les boutons apparaissent mais ImageView renvoie une exception nullpointer lorsque j'essaie de l'utiliser. Voici l'extrait de code où j'afficher le popupWindow:Android Null ImageView sur PopUpWindow

private void initiatePopupWindow() { 
     try { 
      //We need to get the instance of the LayoutInflater, use the context of this activity 
      LayoutInflater inflater = (LayoutInflater) RestPageActivity.this 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      //Inflate the view from a predefined XML layout 
      View layout = inflater.inflate(R.layout.popup_details, 
        (ViewGroup) findViewById(R.id.popup_element)); 
      // create a 300px width and 470px height PopupWindow 
      System.out.println("SELECTED INDEX" + selectedIndex + "***" + IDs.size()); 


      System.out.println("ITEM ID:" + IDs.get(selectedIndex) + "--------------"); 
      ImageView iv = (ImageView) findViewById(R.id.ivItem); 

      if (StaticParameters.getCompleteData().getMenusHash().containsKey(IDs.get(selectedIndex))) { 
       Menu m = StaticParameters.getCompleteData().getMenusHash().get(IDs.get(selectedIndex)); 
       byte[] imgBytes = FileHandler.readFile2(this, "items", m.getActiveImage()); 
       System.out.println("///////////////77" + imgBytes.length + "//" + m.getActiveImage()); 
       if (imgBytes != null && iv != null) { 
        Bitmap b = BitmapFactory.decodeByteArray(imgBytes, 0, imgBytes.length); 
        iv.setImageBitmap(b); 

        Matrix mMatrix = new Matrix(); 
        mMatrix.setRectToRect(new RectF(0, 0, iv.getMeasuredWidth(), iv.getMeasuredHeight()), new RectF(0, 0, 100, 100), Matrix.ScaleToFit.CENTER); 
       } else 
        System.out.println("else geldi"); 

      } else if (StaticParameters.getCompleteData().getProductsHash().containsKey(IDs.get(selectedIndex))) { 
       Product m = StaticParameters.getCompleteData().getProductsHash().get(IDs.get(selectedIndex)); 
       byte[] imgBytes = FileHandler.readFile2(this, "items", m.getActiveImage()); 
       System.out.println("///////////////77" + imgBytes.length + "//" + m.getActiveImage()); 
       if (imgBytes != null && iv != null) { 
        Bitmap b = BitmapFactory.decodeByteArray(imgBytes, 0, imgBytes.length); 
        iv.setImageBitmap(b); 

        Matrix mMatrix = new Matrix(); 
        mMatrix.setRectToRect(new RectF(0, 0, iv.getMeasuredWidth(), iv.getMeasuredHeight()), new RectF(0, 0, 100, 100), Matrix.ScaleToFit.CENTER); 
       } else 
        System.out.println("else geldi"); 
      } 

      pw = new PopupWindow(layout, 300, 470, true); 
      // display the popup in the center 
      pw.showAtLocation(layout, Gravity.CENTER, 0, 0); 


      //mResultText = (TextView) layout.findViewById(R.id.server_status_text); 
      Button cancelButton = (Button) layout.findViewById(R.id.cancelButton); 
      //makeBlack(cancelButton); 
      cancelButton.setOnClickListener(cancel_button_click_listener); 
      Button approveButton = (Button) layout.findViewById(R.id.completeButton); 
      //makeBlack(cancelButton); 
      approveButton.setOnClickListener(approve_button_click_listener); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
+0

dans votre activité avez-vous un ImageView privé attribut iv; ? –

Répondre

1

si dans votre activité que vous avez déclaré un attribut

private ImageView iv; 

vous devez changer:

ImageView iv = (ImageView) findViewById(R.id.ivItem); 

Par

iv = (ImageView) findViewById(R.id.ivItem); vous obtenez cette exception nullPointer b omme vous déclarez localement c'est ce que je chose que votre problème est

+1

Maintenant je vais et me tue !!! OH SHT !!! – dramaticlook

0

Modifier cette ligne

ImageView iv = (ImageView) findViewById(R.id.ivItem); 

à

ImageView iv = (ImageView) layout.findViewById(R.id.ivItem);