2017-04-23 2 views
-2
//MainActivity 
public class MainActivity extends AppCompatActivity { 
    Button b1, b2, b3; 
    TextView t1, t2; 
    int date, month, year, hour, min; 
    Calendar calendar; 
    Date date1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     b1 = (Button) findViewById(R.id.pt); 
     b2 = (Button) findViewById(R.id.pd); 
     b3 = (Button) findViewById(R.id.sa); 
     t1 = (TextView) findViewById(R.id.t1); 
     t2 = (TextView) findViewById(R.id.t2); 
     calendar = Calendar.getInstance(); 
     date = calendar.get(Calendar.DATE); 
     month = calendar.get(Calendar.MONTH); 
     year = calendar.get(Calendar.YEAR); 
     hour = calendar.get(Calendar.HOUR); 
     min = calendar.get(Calendar.MINUTE); 
     calendar.set(year, month, date); 
     b1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
     TimePickerDialog.OnTimeSetListener onTimeSetListener = new         TimePickerDialog.OnTimeSetListener() { 
        @Override 
        public void onTimeSet(TimePicker timePicker, int i, int i1) { 
         t1.setText(i + " : " + i1); 
        } 
       }; 
       TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, onTimeSetListener, 
         hour, min, false); 
       timePickerDialog.show(); 
      } 
     }); 
     b2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       final DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() { 
        @Override 
        public void onDateSet(DatePicker datePicker, int i, int i1, int i2) { 
         t2.setText(i2 + "-" + (i1 + 1) + "-" + i); 
        } 
       }; 
       DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, onDateSetListener, 
         year, month, date); 
       datePickerDialog.show(); 
      } 
     }); 
     b3.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       TimePickerDialog.OnTimeSetListener onTimeSetListener1 = new TimePickerDialog.OnTimeSetListener() { 
        @Override 
        public void onTimeSet(TimePicker timePicker, int i, int i1) { 
         Calendar cal = calendar.getInstance(); 
         Calendar cal1 = (Calendar) cal.clone(); 
         cal1.set(Calendar.HOUR_OF_DAY, i); 
         cal1.set(Calendar.MINUTE, i1); 
         cal1.set(Calendar.SECOND, 0); 
         cal1.set(Calendar.MILLISECOND, 0); 
         if (cal1.compareTo(cal) <= 0) { 
          cal1.add(Calendar.DATE, 1); 
         } 
         Long time = cal1.getTimeInMillis(); 
         setAlarm(time); 
        } 
       }; 
       TimePickerDialog timePickerDialog1 = new TimePickerDialog(MainActivity.this, onTimeSetListener1, 
         hour, min, false); 
       timePickerDialog1.show(); 


     } 
      });} 
      public void setAlarm(Long targetcal){ 
      AlarmManager alarmManager =  (AlarmManager)getSystemService(ALARM_SERVICE); 
      Intent intent = new Intent(MainActivity.this, MyReciever1.class); 
       intent.putExtra("key", targetcal); 
      PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 9, intent, 0); 
      alarmManager.set(AlarmManager.RTC_WAKEUP ,targetcal, pendingIntent); 
     } 
     } 
//MyReciever1 

public class MyReciever1 extends AppCompatActivity { 
    Vibrator vibrator; 
    Button b1, b2; 
    Long cal2; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my_reciever1); 
     vibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE); 
     vibrator.vibrate(600000); 
     Intent intent1 = getIntent(); 
     cal2 = intent1.getLongExtra("key",0); 
     b1= (Button)findViewById(R.id.stop); 
     b1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       vibrator.cancel(); 
       finish(); 
      } 
     }); 
     b2 = (Button)findViewById(R.id.snooze); 
     b2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       MainActivity mainActivity = new MainActivity(); 
       vibrator.cancel(); 
       mainActivity.setAlarm(cal2+1000); 
       finish(); 
      } 
     }); 
    } 
} 

/나는 시간을 선택하는 버튼을 만들어 알람이 다른 활동이 스누즈 버튼을 열어 오프 설정하면 안드로이드에 알람을 설정하고 내 정지가 작동 정지 버튼 만 클릭하면 잠에있다 응용 프로그램은이 코드에서/안드로이드 알람 응용 프로그램은

+0

충돌 정보가 있습니까? –

+0

E/AndroidRuntime : 치명적인 예외 : 주 프로세스 : practices.rajat.com.alarmdemo, PID : 3006 java.lang.IllegalStateException : onCreate() 전에 시스템에서 사용할 수없는 시스템 서비스 android.app.Activity.getSystemService의 Activity.java:5035) at practices.rajat.com.alarmdemo.MainActivity.setAlarm (MainActivity.java:98) at practices.rajat.com.alarmdemo.MyReciever1 $ 2.onClick (MyReciever1.java:39) –

+0

스튜디오입니다. 이 메시지를 보여주는 –

답변

0

문제입니다 충돌한다 :

MainActivity mainActivity = new MainActivity(); 
vibrator.cancel(); 
mainActivity.setAlarm(cal2+1000); 
finish(); 

Activity.getSystemService()는 제대로 초기화 문맥을 필요로하고 당신은 onCreate() 때까지 상황 등의 활동을 사용할 수 없습니다.

onCreate() 이전의 활동에는 시스템 서비스를 사용할 수 없습니다.

새 태그를 사용하여 Activity의 인스턴스를 작성해도 수명주기를 지켜 볼 수는 없습니다.

번들을 설정하고 인 텐트를 전달한 다음 startActivity를 시작하고 마지막으로 활동의 번들 값을 확인하여 활동을 시작할 수 있습니다.

관련 문제