2016-05-31 177 views
0

所以我正在爲我的大學項目製作簡單的鬧鐘。我正在使用Android Studio。鬧鐘應用程序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(棒棒糖)。

當我寫

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有關的任何東西都不好。

如果有人能夠幫助我,或者至少注意到任何錯誤,我會很樂意!

+0

錯誤消息非常簡單:刪除以@TargetApi ...開頭的行並重試... – alfasin

+0

「調用需要API級別23(當前最小值爲19)」。意味着,您使用的代碼行是在新的android-os中開發和支持的。 –

回答

1

你的問題是TimePicker類。方法getHour()getMinute()您使用have been added in API level 23

您必須使用其他方法,或者必須實現兩個版本,一個用於API23,另一個用於較低版本。

0

只需通過getCurrentHour()和getCurrentMinute()方法替換getHour()和getMinute()方法即可。