2013-08-10 2 views
0

저는 안드로이드를 처음 접했고이 코드에서 if 문을 사용하여 줄에 NullPointerException을 얻었습니다. 이유가 확실하지 않습니다. 이 코드는 ImageViews의 2 차원 배열을 저장 한 my gridview의 onItemClick 메서드에 있습니다.selectedImageView.getDrawable()에서 NullPointerException이 발생했습니다.

  ImageView selected = (ImageView) grid.getSelectedView(); 

      if(selected.getDrawable().equals(R.drawable.piecered2)) 
      { 
       Toast.makeText(game.this, "red" , Toast.LENGTH_SHORT).show(); 
      } 

응용 프로그램은 실행되지만 실제로 항목을 클릭하면, 그것은 나에게 NullPointerException이주는 충돌합니다.

+0

PLZ 오류 로그를 붙여 –

답변

1

문서 내용은 Return the view's drawable, or null if no drawable has been assigned.입니다. 드로어 블이 할당되어 있습니까? 그렇지 않은 경우 if 절에서 equals 메소드를 null로 호출하면 NullPointerException이 발생합니다. 확실하다면, 우리는 더 많은 코드가 필요할 수도 있습니다.

1

귀하의 NullPointerException을 제쳐 놓고, 당신이 비교하는 방식이 잘못되었습니다. 왜냐하면 .equals() 메서드는 문자열을 비교하는 데 사용됩니다. 귀하의 R.drawable.piecered2는 R.java에서 발생되는 정수 값 (ID)를 반환합니다. 귀하는 getDrawable() 정수와 비교 될 수없는 Drawable 개체를 반환합니다.

NPE issue에 올 때의 값을 실제로 기록하기 전에 실제로 사용하기 전에 null을 포함하거나 이러한 코드를 추적하는 가장 편리한 방법은 코드를 디버그하는 것입니다. 당신을 가정

1

ImageView 당신의 GridView에 있습니다.

View v = grid.getChildAt(0); 

if(v instanceof ImageView) 
{ 
    ImageView selected = (ImageView) v; 

    if(selected.getDrawable().equals(R.drawable.piecered2)) 
     { 
     Toast.makeText(game.this, "red" , Toast.LENGTH_SHORT).show(); 
     } 
} 
관련 문제