0

このコードを試して、3月最初に警告しました。しかし、うまくいきません。どうすればこの問題を解決できますか?

アプリの内容


ボタンを押すと (クリック 1)、それが 3 月 1 日だった場合、Alarmmanger はインテントを呼び出します。したがって、このアプリケーションは新しいアクティビティを出力します。


エラー


ボタンを押すと (クリック 1)、いつでも Alarmmanger がインテントを呼び出します。


どうすれば解決できますか??

-私の英語が下手でごめんなさい.. ㅠㅠ

public class MainActivity extends Activity {

private AlarmManager alarm;

private NotificationManager notification;
Calendar calendar = Calendar.getInstance();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);}
    public void click1(View v) {
    notification = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Calendar cal = new GregorianCalendar();
    cal.setTimeInMillis(System.currentTimeMillis());


    calendar.clear();
    calendar.set(cal.YEAR,3,1);


    setAlarm();
    }



private void setAlarm(){

alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent());


}
private PendingIntent pendingIntent() {
    // TODO Auto-generated method stub
    Intent i = new Intent(getApplicationContext(), MainActivity.class);
    PendingIntent p = PendingIntent.getActivity(this, 0, i, 0);
    return p;

}
4

2 に答える 2

0

実際の年を取得するためだけに別のカレンダーを作成する必要はありません。
Calendar の新しいインスタンスを要求すると、実際の日付と時刻で初期化されます。これを試してください:

Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
calendar.set(year,Calendar.MARCH,1);

もう1つ、アラームを過去の時間に設定すると、アラームは常に鳴ります。

于 2013-10-20T13:53:34.723 に答える