の変化に応答しませんが、アラームが「デフォルトで」15分ごとにトリガ続け、私は別の好みを選択した場合でも私のアプリは、私は、ユーザーがアラームの時間を選択しようとしてい好み
このコードアラーム
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
am.cancel(pend);
pend.cancel();
Toast.makeText(MainActivity.this,"All cleared", Toast.LENGTH_LONG).show();
}
});
私はのonCreateメソッドおよび第二TIでは保留とアラームを作成していますをキャンセルするために私のMainActivity
public class MainActivity extends AppCompatActivity {
private SharedPreferences sharedPreferences;
private static String reminder;
private static AlarmManager am;
private ImageButton btn;
private ImageButton cancel;
private EditText et;
private Intent intent;
private PendingIntent pend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initialize variables
btn = (ImageButton) findViewById(R.id.imageButton2);
cancel = (ImageButton) findViewById(R.id.imageButton);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
// create intents
intent = new Intent(getApplicationContext(), Notifications.class);
pend = getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am = (AlarmManager) getSystemService(ALARM_SERVICE);
// get the user preference
String sel = sp.getString("repeatPref", "1");
final String repeat[] = getResources().getStringArray(R.array.settings_repeat_by_labels);
final int ss = Integer.parseInt(sel);
// action when user presses the "Tweak" button
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pend.cancel();
am.cancel(pend);
// initialize pend and AlarmManager
pend = getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am = (AlarmManager) getSystemService(ALARM_SERVICE);
// if the user didn't type anything
Calendar calendar = Calendar.getInstance();
// notify at different times
if (repeat[ss - 1].equals("15 MINUTES")) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + 60*1000 ,60*1000, pend);
}
} else if (repeat[ss - 1].equals("1 HOUR")) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + 120 * 1000, 120 * 1000, pend);
}
} else if (repeat[ss - 1].equals("2 HOURS")) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + AlarmManager.INTERVAL_HOUR * 2, AlarmManager.INTERVAL_HOUR * 2, pend);
}
});
を別のボタンに問題に関連して私はそれをキャンセルするために別のボタンを作成しているので、 "btn"が押されたときに、PendingIntent "pend"とAlarmManager "am"がすでに存在するかどうかをチェックし、それは失敗したので、私はこのアプローチがうまくいくと思った。
ユーザはアラームをキャンセルしてアプリを開くたびに、新しい保留中のインテントとアラームマネージャを作成するので、最初に "btn"を押さずにキャンセルボタンを押すとアプリはクラッシュせず、既に動作していたアラームはキャンセルされます。これは私が今いる問題の一部だと思われます。
私はそれがたくさんあることは知っていますが、そのすべてを読む時間を取ってくれてありがとう!