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

startActivity()메소드 nullpointerException관련 질문드립니다.

0 추천
package com.example.checklistapp;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.example.checklistapp.RecordCalendar.gsCalendarColorParam;

public class RecordActivity extends Activity implements OnClickListener {

	TextView tvs[];
	Button btns[];
	String date;

	public class myGsCalendar extends RecordCalendar {

		public myGsCalendar(Context context, LinearLayout layout) {
			super(context, layout);
			// TODO Auto-generated constructor stub
		}

		@Override
		public void myClickEvent(int yyyy, int MM, int dd) {
			// TODO Auto-generated method stub
			MM++;
			date = "" + yyyy + "/" + MM + "/" + dd;

			cal.redraw();

			cal.applyHoliday();

			// / 선택된 날짜는 배경 이미지를 변경
			cal.setSelectedDay(RecordActivity.this.getResources().getDrawable(
					R.drawable.icon));

			// / 선택된 날짜는 글씨를 변경
			cal.setSelectedDayTextColor(0xff009999);

			super.myClickEvent(yyyy, MM, dd);

			Intent intent = new Intent(RecordActivity.this, ViewData.class);
			intent.putExtra("date", date);
			if (intent != null) {
				startActivity(intent);
			}
		}
	}

	myGsCalendar cal;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.record_activity);

		// / 달력을 띄울 대상 레이아웃
		LinearLayout lv = (LinearLayout) findViewById(R.id.calendar_lLayout);

		// / 년 월 일 표시할 텍스트뷰
		tvs = new TextView[3];
		tvs[0] = (TextView) findViewById(R.id.tv1);
		tvs[1] = (TextView) findViewById(R.id.tv2);
		tvs[2] = null; // / 일은 표시하지 않음

		// / 누르면 년 월 일 조절할 버튼
		btns = new Button[4];
		btns[0] = null; // 년도는 조절하지 않음
		btns[1] = null; // 위와 동일
		btns[2] = (Button) findViewById(R.id.Button03);
		btns[3] = (Button) findViewById(R.id.Button04);

		// / 달력객체 생성
		cal = new myGsCalendar(RecordActivity.this, lv);

		// / 색상 설정할 객체 생성
		gsCalendarColorParam cParam = new gsCalendarColorParam();

		cParam.m_cellColor = 0x00000000;
		cParam.m_textColor = 0xffffffff;
		cParam.m_saturdayTextColor = 0xff33ccff;
		cParam.m_lineColor = 0x99999999;
		cParam.m_topCellColor = 0xff003333;
		cParam.m_topTextColor = 0xffffffff;
		cParam.m_topSundayTextColor = 0xffffffff;
		cParam.m_topSaturdatTextColor = 0xffffffff;

		// / 셋팅한 값으로 색상값 셋~
		cal.setColorParam(cParam);

		// / 배경으로 사용할 이미지 얻기
		Drawable img = getResources().getDrawable(R.drawable.bg);
		// 배경 이미지 셋~
		cal.setBackground(img);

		// / 달력을 띄울 크기 지정
		// cal.setCalendarSize( 478, 600 ) ;

		// / 최상단은 높이를 35로 준다(전체높이중 한 셀의 높이 600/7한 값에서 35로 변경되니 달력의 총 높이가 줄어든다.)
		// cal.setTopCellSize( 35 ) ;

		// / 누르면 반응할 버튼들 셋팅
		cal.setControl(btns);

		// / 년 월 일을 띄울 텍스트뷰 셋팅
		cal.setViewTarget(tvs);

		cal.initCalendar();

		// / 선택된 날짜는 배경 이미지를 변경
		cal.setSelectedDay(getResources().getDrawable(R.drawable.icon));

		// / 선택된 날짜는 글씨를 변경
		cal.setSelectedDayTextColor(0xff009999);

		// /// 선택된 날짜는 글씨와 배경을 변경
		// cal.setSelectedDay( 0xff000000, 0xffffffff ) ;

		// / 3월 24일은 휴일이라고 계산
		cal.addHoliday(324);

		// / 휴일은 일요일과 같은 글씨색으로 변경한다.
		cal.applyHoliday();
	}

	@Override
	public void onClick(View v) {

	}
}

일단 ViewData라는 액티비티는 다른 액티비티에서 startActivity()로 실행시키면 실행되는 액티비티고요

intent가 null이 아닐까싶어 if문을 해봤지만 intent는 null이 아니였습니다.

여기서 2주일의 시간이지났습니다.. ㅠㅠ 온통 머리를짜내고 소스코드를 100번정도읽어봐도 원인이 뭔지 도통떠올르지 않습니다. 제발 도와주세요 흨..

mar (180 포인트) 님이 2013년 8월 29일 질문

3개의 답변

0 추천
ViewData가 Activity인가요?
Gradler (109,780 포인트) 님이 2013년 8월 29일 답변
0 추천
혹시 메니페스트에 startActivity()로 실행시킬 액티비티를 등록하셨나요?

intent가 null이 아닌데 저런 에러가 뜨면 메니페스트에 등록하지 않은 것 같네요
노투아 (160 포인트) 님이 2013년 8월 29일 답변
0 추천
버튼 클릭 리스너를 다는데 문제가 생긴거 아닐까요.

해당 소스로만 봐선 액티비티를 상속하고 온클릭리스너를 임플리먼트했는데 myClickEvent가 오버라이드 되는 것이 좀 수상하네요.

xml에서 onclick을 구현했는데 소스부에 미구현 됐을 경우 널포인터 뜰 수도 있고, 클릭 이벤트가 잘못연결 되면 널포인터 발생할 수도 있습니다. 버튼 이벤트 연결 제대로됬는지 확인한번 해보심이..
기초개발자 (24,060 포인트) 님이 2013년 8월 29일 답변
...