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

NullPointerException 발생의 이유를 모르겠습니다.

0 추천

java.lang.NullPointerException 에러가 뜹니다..에러 위치는 아래에 표시했습니다.

choice_ok라는 버튼을 누르면, 리스트에서 선택한 체크박스의 텍스트들을 toast로 띄우거나 다른 class로 갖고

가려고 합니다만.. 버튼을 누르면 저 윗쪽에서 널포인트 익셉션이 뜨면서 에러가 발생합니다.ㅠ

코드 위치가 잘못된건지.. 널포인트익셉션이, choiceArr 사이즈가 null값이라서 그런건가요?

지금 실제로는 회원 3명이 들어있어서 null은 아닌데요..

 
+ 에러로그
 
 
+전체소스
public class choiceAdd extends testCode implements OnClickListener{
	
	ArrayList<String> choiceArr;
	public static ArrayAdapter<String> choiceAdap;
	ListView choiceList;
	Button choice_ok;
	String sel;
	RelativeLayout test;
	public CheckBox check;
	CheckBox cb;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.choice_add);
		cb = (CheckBox)findViewById(R.id.checkbox);
		choice_ok = (Button)findViewById(R.id.choice_ok);
		choice_ok.setOnClickListener(this);
		
		choiceList = (ListView)findViewById(R.id.choice_list);
	
		final ArrayList<String>choiceArr = new ArrayList<String>();
		
		choiceAdap = 
new ArrayAdapter<String>(this,R.layout.listview_custom,R.id.listText,choiceArr);
		choiceList.setAdapter(choiceAdap);

		choiceList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//single에서 multiple로 변경(체크박스)
				
		ArrayList temp = select_saram(); //회원정보 select
		for(int i=0; i < temp.size(); i++)
		{
			choiceArr.add(temp.get(i).toString()); 
		}
		choiceAdap.notifyDataSetChanged(); //새로 갱신해서 보여줌~
		
	
	}//onCreate
	
	

 

anci (19,950 포인트) 님이 2014년 3월 13일 질문
anci님이 2014년 3월 13일 수정
에러로그를 올려주셈....
에러로그 올렸습니다,.(__)

2개의 답변

+2 추천
 
채택된 답변

ArrayList<String> choiceArr;

위와 같이 전역으로 선언하셨는데

 

onCreate 안에서 다시 선언하셨네요

final ArrayList<String>choiceArr = new ArrayList<String>();

 

따라서, 지금 소스에는 choiceArr 이 2개 존재하는건데요

전역변수 choiceArr     /     onCreate 안에서 사용가능한 지역변수 choiceArr

 

지역변수 choiceArr에는 값을 할당해주셨지만

전역변수 choiceArr은 선언만 되어 있고 비어있지요

 

onClick 안에 있는 choiceArr 는 전역변수로 선언된 녀석을 참조할테니

이름없는 답변자분 말씀처럼 널 값이 들어있죠

 

결론은 onCreate 안에 재 선언하지마시고 아래와 같이 해주세요

choiceArr = new ArrayList<String>();

초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 13일 답변
anci님이 2014년 3월 13일 채택됨
왜 null값이 들어갔는지 알겠네요 ㅠㅠ..답변 감사합니다!
다른 분들도 감사해요!!
+3 추천

choiceArr 이넘이 초기화가 안되있는거 아니에요?

choiceArr = new ~~~~~;

전체소스를 올려보세요

  (11,920 포인트) 님이 2014년 3월 13일 답변
답변 감사합니다. 소스 올려보겠습니다 ㅠ.ㅠ
...