2015-06-12 4 views
0

Я занимаюсь таймер-приложением, но я не понимаю, почему ошибка в программе. это мой кодОшибка диспетчера аварийных событий NullPointerException

public class SampleBootReceiver extends BroadcastReceiver { 
    private PendingIntent pendingIntent; 
    AlarmManager alarmManager; 
    @Override 

    public void onReceive(Context context, Intent intent) { 

     DatabaseHandler db ; 
     db=new DatabaseHandler(context); 
    Contact cn= db.getContact(1); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(cn.getHour())); 
     calendar.set(Calendar.MINUTE, Integer.parseInt(cn.getMinutes())); 
     calendar.set(Calendar.DATE, Integer.parseInt(cn.getDay())); 
     Intent myIntent = new Intent(context,AlarmReceiver.class); 
     Log.w("log", "HOURS" +Integer.parseInt(cn.getHour())); 
     Log.w("log", "MINUTE" +Integer.parseInt(cn.getMinutes())); 
     Log.w("log", "DAY" +Integer.parseInt(cn.getDay())); 
     Log.w("log", "id" + cn.getId()); 
     Log.w("log", "phone" + cn.getPhoneNumber()); 
     Log.w("log", "sms" + cn.getSmsBody()); 

     pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, pendingIntent.FLAG_UPDATE_CURRENT); 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 20000, pendingIntent); 

    } 
} 

И это NullPointerException Ошибка в линии alarmManager в alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 20000, pendingIntent);

ответ

1

До сих пор я вижу на вашем коде, вы никогда не инициализировать alarmManager поэтому нуль при вызове setRepeating.

Перед вызовом этого метода вы должны иметь что-то вроде этого

alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
+0

Я действительно благодарю вас за этот ответ, это полезно –