2016-05-31 1 views
0

私は大学で私のプロジェクトのための簡単な目覚まし時計を作っています。私はAndroid Studioを使用しています。私はcalendar.set(...)とhour_string/minute_stringせずにそれを設定する場合は、単に他のアプリは動作を停止し、アラームはそれが完璧に動作設定を表示するには、アラームアプリケーションAndroidスタジオ

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

は、ここでは、コードです。

プロジェクト構造は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関連のものが悪い。

誰かが私を助けたり、少なくとも間違いに気付いたら、私は感謝しています!

+0

「@TargetApi ...」で始まる行を削除し、もう一度やり直してください... – alfasin

+0

「呼び出しにはAPIレベル23(現在の最小値は19)」が必要です。つまり、あなたが使用したコード行は、新しいandroid-osで開発され、サポートされています。 –

答えて

1

問題はTimePickerクラスです。方法getHour()getMinute()have been added in API level 23を使用しています。

他の方法を使用するか、API23用と下位バージョン用の2つのバージョンを実装する必要があります。

0

getHour()およびgetMinute()メソッドをgetCurrentHour()およびgetCurrentMinute()メソッドに置き換えるだけです。