Android 安卓报警应用程序,带休眠按钮 //main活动 公共类MainActivity扩展了AppCompatActivity{ 按钮b1、b2、b3; 文本视图t1、t2; 整数日期、月份、年份、小时、分钟; 日历; 日期1; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(按钮)findViewById(R.id.pt); b2=(按钮)findViewById(R.id.pd); b3=(按钮)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); 日历集(年、月、日); b1.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ TimePickerDialog.OnTimeSetListener OnTimeSetListener=新建TimePickerDialog.OnTimeSetListener(){ @凌驾 public void onTimeSet(计时器选择器计时器选择器,int i,int i1){ t1.setText(i+“:”+i1); } }; TimePickerDialog TimePickerDialog=新的TimePickerDialog(MainActivity.this,onTimeSetListener, 小时、分钟、假); timePickerDialog.show(); } }); b2.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ final DatePickerDialog.OnDateSetListener OnDateSetListener=新的DatePickerDialog.OnDateSetListener(){ @凌驾 公共void onDateSet(日期选择器DatePicker、int i、int i1、int i2){ t2.setText(i2+“-”+(i1+1)+“-”+i); } }; DatePickerDialog DatePickerDialog=新建DatePickerDialog(MainActivity.this,onDateSetListener, 年、月、日); datePickerDialog.show(); } }); b3.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ TimePickerDialog.OnTimeSetListener onTimeSetListener1=新建TimePickerDialog.OnTimeSetListener(){ @凌驾 public void onTimeSet(计时器选择器计时器选择器,int i,int i1){ Calendar cal=Calendar.getInstance(); Calendar cal1=(Calendar)cal.clone(); 计算1.设置(日历小时/天,i); cal1.set(日历分钟,i1); cal1.set(日历秒,0); cal1.set(日历毫秒,0); 如果(cal1.compareTo(cal)

Android 安卓报警应用程序,带休眠按钮 //main活动 公共类MainActivity扩展了AppCompatActivity{ 按钮b1、b2、b3; 文本视图t1、t2; 整数日期、月份、年份、小时、分钟; 日历; 日期1; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(按钮)findViewById(R.id.pt); b2=(按钮)findViewById(R.id.pd); b3=(按钮)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); 日历集(年、月、日); b1.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ TimePickerDialog.OnTimeSetListener OnTimeSetListener=新建TimePickerDialog.OnTimeSetListener(){ @凌驾 public void onTimeSet(计时器选择器计时器选择器,int i,int i1){ t1.setText(i+“:”+i1); } }; TimePickerDialog TimePickerDialog=新的TimePickerDialog(MainActivity.this,onTimeSetListener, 小时、分钟、假); timePickerDialog.show(); } }); b2.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ final DatePickerDialog.OnDateSetListener OnDateSetListener=新的DatePickerDialog.OnDateSetListener(){ @凌驾 公共void onDateSet(日期选择器DatePicker、int i、int i1、int i2){ t2.setText(i2+“-”+(i1+1)+“-”+i); } }; DatePickerDialog DatePickerDialog=新建DatePickerDialog(MainActivity.this,onDateSetListener, 年、月、日); datePickerDialog.show(); } }); b3.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ TimePickerDialog.OnTimeSetListener onTimeSetListener1=新建TimePickerDialog.OnTimeSetListener(){ @凌驾 public void onTimeSet(计时器选择器计时器选择器,int i,int i1){ Calendar cal=Calendar.getInstance(); Calendar cal1=(Calendar)cal.clone(); 计算1.设置(日历小时/天,i); cal1.set(日历分钟,i1); cal1.set(日历秒,0); cal1.set(日历毫秒,0); 如果(cal1.compareTo(cal),android,Android,此代码中存在问题: //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

此代码中存在问题:

//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();
            }
        });
    }
}
Activity.getSystemService()
需要正确初始化的上下文,只有在
onCreate()
之前才能将活动用作上下文

系统服务对
onCreate()之前的活动不可用。

使用新标记创建活动实例不会让您完成它应该完成的生命周期


您可以通过设置绑定启动活动,有目的地传递它,启动startActivity,最后检查活动中的绑定值。

您是否有一些崩溃信息?E/AndroidRuntime:FATAL EXCEPTION:main Process:practices.rajat.com.alarmdemo,PID:3006 java.lang.IllegalStateException:System seandroid.app.Activity.getSystemService(Activity.java:5035)中practices.rajat.com.alarmdemo.MainActivity.setAlarm(MainActivity.java:98)中practices.rajat.com.alarmdemo.MyReciever1$2.onClick(MyReciever1.java:39)中onCreate()之前的活动无法使用服务演播室正在播放此消息
MainActivity mainActivity = new MainActivity();
vibrator.cancel();
mainActivity.setAlarm(cal2+1000);
finish();