报警应用Android Studio

时间:2016-05-31 17:08:19

标签: java android android-studio alarm

所以我正在为我在大学的项目制作简单的闹钟。我正在使用Android Studio。

以下是代码:

public class AlarmActivity extends AppCompatActivity {

TimePicker alarm_timer;
TextView update_text;
Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alarm);
    this.context = this;

    // initialize
    alarm_timer = (TimePicker) findViewById(R.id.timePicker);
    update_text = (TextView) findViewById(R.id.textView);

    //create instance of calendar
    final Calendar calendar = Calendar.getInstance();

    Button alarm_on = (Button) findViewById(R.id.bttnAlarmSet);

    //onClickListener
    assert alarm_on != null;
    alarm_on.setOnClickListener(new View.OnClickListener() {
        @TargetApi(Build.VERSION_CODES.M)  
        @Override
        public void onClick(View v) {

            calendar.set(Calendar.HOUR_OF_DAY, alarm_timer.getHour()); 
            calendar.set(Calendar.MINUTE, alarm_timer.getMinute());

            int hour = alarm_timer.getHour();
            int minute = alarm_timer.getMinute();

            //convert int values to string
            String hour_string = String.valueOf(hour);
            String minute_string = String.valueOf(minute);

            //Change TextView
            set_alarm_text("Alarm set to: "+ hour_string +":"+ minute_string );
    }
    });        
}

//Method to Change text View
private void set_alarm_text(String output) {
     update_text.setText(output);
}

如果我在没有calendar.set(...)和hour_string / minute_string的情况下进行设置,只需显示闹钟设置就可以完美运行,否则应用就会停止工作。

项目结构适用于API19:Android 4.4(KitKat)。我的手机是API23:Android 5.1(Lollipop)。

我写的时候

calendar.set(Calendar.HOUR_OF_DAY, alarm_timer.getHour()); 
calendar.set(Calendar.MINUTE, alarm_timer.getMinute());

它说“呼叫需要API级别23(当前最小值为19)”。从小黄色的灯泡中,它自动写了一行“@TargetApi(Build.VERSION_CODES.M)”。我认为这就是问题所在,但我对Java或与Java有关的任何东西都不好。

如果有人可以帮助我或者至少发现任何错误,我将不胜感激!

2 个答案:

答案 0 :(得分:1)

您的问题是TimePicker类。您使用have been added in API level 23的方法getHour()getMinute()

您必须使用其他方法,或者必须实现两个版本,一个用于API23,另一个用于较低版本。

答案 1 :(得分:0)

只需用getCurrentHour()和getCurrentMinute()方法替换getHour()和getMinute()方法。