안드로이드 개발 질문/답변
(글 수 45,052)
public class WorkOrderAlarmManager {
private static Context mContext;
SharedPreferences prefs = mContext.getSharedPreferences("Pref", Context.MODE_PRIVATE);
SharedPreferences.Editor ed = prefs.edit();
public WorkOrderAlarmManager(Context context) {
mContext = context;
}
public void set_time(EditText edit){
long time = Long.parseLong(edit.getText().toString());
long timer = time * 1000;
ed.putLong("jTime", timer);
ed.commit();
}
public void jalarm(long targetTime) {
Date t = new Date();
long jTime = prefs.getLong("jTime", 0);
t.setTime(targetTime + jTime); // 유효시간이 시간단위로 지정
Intent intent = new Intent(mContext.getApplicationContext(),
WorkOrderAlarmReceiver.class);
intent.putExtra("jalarm", "1");
PendingIntent sender = PendingIntent.getBroadcast(mContext, 1, intent, 0);
AlarmManager am = (AlarmManager) mContext
.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, t.getTime(), sender);
}
public class WorkOrderAlarm extends Activity implements CompoundButton.OnCheckedChangeListener{
/** Called when the activity is first created. */
boolean order = true;
WorkOrderAlarmManager am = new WorkOrderAlarmManager(this);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
CheckBox ch = (CheckBox)findViewById(R.id.missing); // 체크박스 생성
ch.setOnCheckedChangeListener(this);
Button btn = (Button)findViewById(R.id.btn); // 버튼 생성
btn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
EditText edit = (EditText)findViewById(R.id.edit);
am.set_time(edit);
}
});
SharedPreference를 사용하여 Activity에서 EditText를 입력받아 그 값을 저장하는걸 구현하는 중인데요~
소스 상으로는 오류가 없는데요 빌드를 시키면
SharedPreferences prefs = mContext.getSharedPreferences("Pref", Context.MODE_PRIVATE);이 부분과
WorkOrderAlarmManager am = new WorkOrderAlarmManager(this);이 부분에서
06-13 11:14:20.226: ERROR/AndroidRuntime(18391): Caused by: java.lang.NullPointerException
뜨면서 오류가 나요~ 왜그런걸까요?ㅠ 고수분님들 도와주세요~
해결방법도 아시면 좀 알려주세요~




context가 초기화 되기도 전에... 쓰여졌네요;;;; 당연히 null 이 맞습니다.
SharedPreferences prefs;
public WorkOrderAlarmManager(Context context) {
prefs = context.getSharedPreferences(String..., int);
}
요런 식으로 해주세요~
아랫부분도 마찬가지구요
}