0

の変化に応答しませんが、アラームが「デフォルトで」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"を押さずにキャンセルボタンを押すとアプリはクラッシュせず、既に動作していたアラームはキャンセルされます。これは私が今いる問題の一部だと思われます。

私はそれがたくさんあることは知っていますが、そのすべてを読む時間を取ってくれてありがとう!

答えて

0

"btn"をクリックする前に共有設定を再評価していたため、私のアプリが変更に反応しませんでした。共有設定部分をonClickメソッドに移動した後に修正されました。

関連する問題