2017-03-08 6 views
0

안녕하세요. 현재 내 목록 어댑터의 버튼을 설정하려고합니다. 버튼의 개념은 두 개의 편집 텍스트에서 한 세트의 값을 하나의 시간에, 다른 하나는 분 값으로 가져온 다음 캘린더와 알람에 설정하는 것입니다. 응용 프로그램이 특정 시간에 도달하면 사용자에게 알림을 보내야하지만 현재 원하는 시간을 기다리지 않고 버튼을 누르는 즉시 알림을 보냅니다. 아무도 내 오류를 발견 할 수 있습니까? 또한캘린더로 특정 시간에 알림 보내기

convertView = LayoutInflater.from(getContext()).inflate(R.layout.custom_row_contact_number, null); 


      alarmManager = (AlarmManager) convertView.getContext().getSystemService(Context.ALARM_SERVICE); 

      myCalendar = Calendar.getInstance(); 

      year_x = myCalendar.get(Calendar.YEAR); 
      month_x = myCalendar.get(Calendar.MONTH); 
      day_x = myCalendar.get(Calendar.DAY_OF_MONTH); 


      receiver = new Intent(convertView.getContext(), Alarm_Reciever.class); 


      Button btnSendMessage = (Button)convertView.findViewById(R.id.btnSendMessage); 
      btnSendMessage.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        int hourValue = Integer.valueOf(editHours.getText().toString()); 
        int minutevalue = Integer.valueOf(editMinutes.getText().toString()); 

        Log.i("hour", Integer.toString(hourValue)); 






        myCalendar.set(Calendar.HOUR_OF_DAY,hourValue); 
        myCalendar.set(Calendar.MINUTE, minutevalue); 



        pendingIntent = PendingIntent.getBroadcast(v.getContext(), 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT); 

        alarmManager.set(AlarmManager.RTC_WAKEUP,myCalendar.getTimeInMillis(),pendingIntent); 


       } 
      }); 

     } 

은 내가 아래의 코드로 남아있어

 alarmManager = (AlarmManager) convertView.getContext().getSystemService(Context.ALARM_SERVICE); 

     myCalendar = Calendar.getInstance(); 

     year_x = myCalendar.get(Calendar.YEAR); 
     month_x = myCalendar.get(Calendar.MONTH); 
     day_x = myCalendar.get(Calendar.DAY_OF_MONTH); 


     receiver = new Intent(convertView.getContext(), Alarm_Reciever.class); 

에서 OnCreate하기 위해 아래의 코드를 이동하는 경우 그러나 나는 오류를

java.lang.NullPointerException이 나타납니다 호출하는 시도를 null 객체 참조에 대한 가상 메소드 'void java.util.Calendar.set (int, int)'

Button btnSendMessage = (Button)convertView.findViewById(R.id.btnSendMessage); 
     btnSendMessage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       int hourValue = Integer.valueOf(editHours.getText().toString()); 
       int minutevalue = Integer.valueOf(editMinutes.getText().toString()); 

       Log.i("hour", Integer.toString(hourValue)); 






       myCalendar.set(Calendar.HOUR_OF_DAY,hourValue); 
       myCalendar.set(Calendar.MINUTE, minutevalue); 



       pendingIntent = PendingIntent.getBroadcast(v.getContext(), 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT); 

       alarmManager.set(AlarmManager.RTC_WAKEUP,myCalendar.getTimeInMillis(),pendingIntent); 


      } 
     }); 

답변

0

It 오늘은 오늘이므로 예약 된 시간이 과거 일 수 있기 때문일 수 있습니다.

몇 가지 방법으로 해결할 수 있지만 시간과 분을 설정 한 후에 추가하는 것이 쉬운 방법입니다.

if(calendar.getTimeInMillis() < System.currentTimeMillis()) { 
    calendar.add(Calendar.DAY_OF_YEAR, 1); 
} 
+0

어머 니가 내 얼굴에 달걀을 가지고 있지 않은지 과거 시간 : D – Steven