2016-05-31 17 views
0

So mache ich einfache Wecker für mein Projekt an der Universität. Ich verwende Android Studio.Alarm Anwendung Android Studio

Hier ist der Code:

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); 
} 

Wenn ich es ohne calendar.set eingerichtet (...) und hour_string/minute_string, um nur anzuzeigen Alarm es funktioniert perfekt, sonst die App nicht mehr funktioniert.

Projektstruktur ist für API19: Android 4.4 (KitKat). Mein Telefon ist API23: Android 5.1 (Lollipop).

Als ich schrieb

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

Er sagt: "Anruf erfordert API Stufe 23 (Current min 19)". Und von der kleinen gelben Glühbirne hat es mir automatisch die Zeile "@TargetApi (Build.VERSION_CODES.M)" geschrieben. Ich denke, das ist, wo das Problem ist, aber ich bin schlecht in Java oder irgendetwas Java-bezogen.

Wenn mir jemand helfen oder zumindest einen Fehler bemerken könnte, wäre ich dankbar!

+0

Die Fehlermeldung ist ziemlich einfach: entfernen Sie die Zeile, die mit '@TargetApi ...' beginnt und versuchen Sie es erneut ... – alfasin

+0

"Aufruf erfordert API Level 23 (aktuelle min ist 19)". bedeutet, dass die von Ihnen verwendete Codezeile in neuen Android-Betriebssystemen entwickelt und unterstützt wird. –

Antwort

1

Ihr Problem ist die TimePicker-Klasse. Die Methoden getHour() und getMinute() verwenden Sie have been added in API level 23.

Sie müssen andere Methoden verwenden oder Sie müssen zwei Versionen implementieren, eine für API23 und eine für niedrigere Versionen.

0

Ersetzen Sie einfach die Methoden getHour() und getMinute() durch die Methoden getCurrentHour() und getCurrentMinute().

Verwandte Themen