마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

findViewById null값 문제

0 추천

액티비티 클래스가 아닌 따로 객체클래스를 이미지뷰를 상속하여 하나 만들었습니다.

public class Ball extends ImageView
{
	ImageView iv;

	public Ball(Context context) 
	{	
		super(context);
		final View rootLayout = (View)View.inflate(context, R.layout.activity_main, null);
		iv = (ImageView)rootLayout.findViewById(R.id.Red);
	        iv.setImageResource(R.drawable.red);
         }
		
}

 

처음에는 final View rootLayout = (View)View.inflate(context, R.layout.activity_main, null); 이부분이 없었습니다.

그런데 찾아보니 다른 클래스에서 findViewById를 쓰면 activity.findViewById가 호출이 되어서 널값을 받게되어서

view.findViewById로 호출을 해야한다고 해서 위 소스처럼 인플레이터를 사용하여 findViewById를 호출하니까

null값을 받아오는 문제는 사라졌습니다. 문제는 그림이 화면상에 안그려지는데 왜 안그려지는지 잘 모르겠습니다..

익명사용자 님이 2015년 2월 25일 질문

1개의 답변

+1 추천
뭔가 큰 오해가 있으신듯 보입니다.

이미지 뷰를 상속받아서 ball을 만든 이유는 무엇인가요..

무엇을 하기 위해서든 위 코드는 잘못 되었어요.

결론적으로 뭘 하고 싶은건지를 알려줘야 답변드리기 더 쉬울듯 합니다.
이드로이드 (22,930 포인트) 님이 2015년 2월 25일 답변
Ball이라는 객체를 만들어서 메인 액티비티에서 스레드를 돌리면서 Ball객체를 계속 생성해서 내려오게하고싶습니다. 그래서 Ball객체에서는 Ball을 그려주는 것과 움직이는 것을 넣으려고해서 저런식으로 코드를 짰습니다
iv 만들 필요 없고 super 이후 setImageResource(R.drawable.red);를 넣어주시면 될듯 한데요.
...