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

안드로이드 널포인트익셉션 에러

0 추천

-----Main Activity-------------
Button.OnClickListener mClickListener=new Button.OnClickListener(){
		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.btn_stage1_start:
				intent = new Intent(MainActivity.this, QuizActivity.class);
				db = DBhelper.getReadableDatabase(); 
				cur = db.rawQuery("select * from quiz where types = 1 order by random() limit 10", null);
				// 처음 레코드로 이동
				while( cur.moveToNext())
				{
					Quiz str = new Quiz();
					
					str.setQuestion(cur.getString( 0 ));	
					str.setAnswer(cur.getString( 1 ));	
					str.setTypes(cur.getInt( 2 ));	
					
					quizList.add(str);
				}
				intent.putParcelableArrayListExtra("qList", quizList);
				startActivity(intent);

-------QuizActivity----------
else if(Count==10){
			/*intent=new Intent(QuizActivity.this, MainActivity.class);
			startActivity(intent);*/
			
			final Dialog dialog = new Dialog(QuizActivity.this);
	        //final Dialog dialog = new Dialog(test.this);
	        //다이얼로그 타이틀 제거
	        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
	        //다이얼로그에 레이아웃 설정
	        View view = View.inflate(QuizActivity.this, R.layout.game_result, null);
	        //다잉얼로그 배경 투명
	        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
	        dialog.setContentView(view);
	        dialog.show();
	        
	      //다이얼로그가 닫혔을시 수행됨
	        dialog.setOnDismissListener(new OnDismissListener() {
	         public void onDismiss(DialogInterface dialog) {	
	         }
	        });
	        
	        TextView sucess_number = (TextView)view.findViewById(R.id.sucess_number);
	    
	        
	        Button exit = (Button)view.findViewById(R.id.exit);
	        
	        sucess_number.setText(answerCount+"/10문제 정답 ");
	        
		        exit.setOnClickListener(new OnClickListener() {
		         
		         public void onClick(View v) {	
		        	 Intent intent = new Intent(QuizActivity.this,MainActivity.class);
		        	 	//intent.putExtra("score",Integer.toString(answerCount)); 
						startActivity(intent);	
		          dialog.dismiss();
		         }
		        });//end setonclicklistener
		}//end if
	
		doit();//timer

	}
	
	
	
	
private void doit(){
  	  
		new Thread(){
			
		public void run(){
			loop();
		}
			
	}.start();  
}//end doit


private void loop(){
	for( time=10;time>=0; time--){
			handler.post(new Runnable(){
				public void run(){
					textTimer.setText(Integer.toString(time));
						if(time==0){	
						if(answer.equals(editAnswer.getText().toString())){
							Toast.makeText(QuizActivity.this, "정답",Toast.LENGTH_SHORT).show();
							answerCount++;
							Count++;
							if(Count<10){
								intent=new Intent(QuizActivity.this, QuizActivity.class);
								intent.putExtra("sendCount",Count);
								intent.putParcelableArrayListExtra("qList", quizList);
								startActivity(intent);			
								}else if(Count == 10){
									intent=new Intent(QuizActivity.this, QuizActivity.class);
									intent.putExtra("sendAnswerCount", answerCount);
									intent.putExtra("sendCount",Count);
								startActivity(intent);
								}
							
						}else if(!answer.equals(editAnswer.getText().toString())){
							Toast.makeText(QuizActivity.this, "오답",Toast.LENGTH_SHORT).show();
							Count++;	
							if(Count<10){
								intent=new Intent(QuizActivity.this, QuizActivity.class);
								intent.putExtra("sendAnswerCount", answerCount);
								intent.putExtra("sendCount",Count);
								intent.putParcelableArrayListExtra("qList", quizList);
								startActivity(intent);			
								}else if(Count == 10){
								intent=new Intent(QuizActivity.this, QuizActivity.class);
								intent.putExtra("sendAnswerCount", answerCount);
								intent.putExtra("sendCount",Count);
								startActivity(intent);
								}
						}

						
					}//end if time
				}//end run
			});
			try {
				Thread.sleep(1000);
				Thread.interrupted();
11-20 02:01:24.531: E/AndroidRuntime(2506): FATAL EXCEPTION: main
11-20 02:01:24.531: E/AndroidRuntime(2506): java.lang.NullPointerException
11-20 02:01:24.531: E/AndroidRuntime(2506): at com.example.quiz.QuizActivity$4.run(QuizActivity.java:131)
11-20 02:01:24.531: E/AndroidRuntime(2506): at android.os.Handler.handleCallback(Handler.java:587)
11-20 02:01:24.531: E/AndroidRuntime(2506): at android.os.Handler.dispatchMessage(Handler.java:92)
11-20 02:01:24.531: E/AndroidRuntime(2506): at android.os.Looper.loop(Looper.java:130)
11-20 02:01:24.531: E/AndroidRuntime(2506): at android.app.ActivityThread.main(ActivityThread.java:3683)
11-20 02:01:24.531: E/AndroidRuntime(2506): at java.lang.reflect.Method.invokeNative(Native Method)
11-20 02:01:24.531: E/AndroidRuntime(2506): at java.lang.reflect.Method.invoke(Method.java:507)
11-20 02:01:24.531: E/AndroidRuntime(2506): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-20 02:01:24.531: E/AndroidRuntime(2506): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-20 02:01:24.531: E/AndroidRuntime(2506): at dalvik.system.NativeStart.main(Native Method)
 
소스랑 해서 다시 질문드립니다.
 
아까 질문내용은 "스는 간단하게 퀴즈 어플 하나 실습으로 만들었는데요.
메인액티비티에서 asset 폴더의 db파일을 불러와서 sql쿼리를 통해
제가 얻고자 하는 데이터만 얻어서 리스트에 넣고
 
문제분야마다 그에 해당하는 버튼을 누르면 쿼리가 돌아가게끔 해서 문제를 실행하는 액티비티로 보냈습니다.
문제를 실행하는 액티비티에서는 스레드를 이용해서 타이머를 줬구요. 10초마다 문제가 바뀌게끔 하였습니다.
 
실행을 하면 문제도 잘 나오고 타이머도 잘뜨고 아무 이상이 없는데... 총 10문제가 다 나오고 다이얼로그로 몇개 맞았다는것까지 뜨고 나면
몇초 후에 에러가 뜨면서 어플이 중지되었다고 합니다. 그리고 확인을 누르면 다시 8번 문제로 돌아가서 다시 반복해서 문제를 보여주는데요. " 
 
이거구요. 에러에 빨간줄 쳐놓은 퀴즈액티비티 131라인에 에러라는 거.. . 위의 소스에 101번 라인 if(Count <10)입니다.
흰우유 (200 포인트) 님이 2013년 11월 20일 질문
흰우유님이 2013년 11월 20일 수정

2개의 답변

0 추천
라인이 불일치 하는 것 같은데...

if (Count < 10)

이 라인이 맞는건지...

101번째 라인에는 다른건데...
mg2000 (2,640 포인트) 님이 2013년 11월 20일 답변
0 추천
보기 어렵게 짜셨네요.. 소스를..

간단하게 설명드릴게요 NullPointException 이면 직접 어느시점에 Null 이 나는지 로그를찍어보세요 데이터 자체가 없는지 갯수가 부족한건지 등등 그렇게해결 하셔야저.. 이렇게 물어보시면 딱보고 한눈에 들어오게 짜신것도 아닌대 애러를찾기란 난감하겠죠? 전체소스도 아닌거고.
익명사용자 님이 2013년 11월 20일 답변
...