0

환경의 변화에 ​​반응하지 않고 경보 내가 다른 선호내 애플 i는 사용자가 알람 시간을 선택할 수 있도록하기 위해 노력하고있어

이를 선택하는 경우에도 "기본값 인"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"이 이미 존재하는지 또는 아니오인지 그리고 "canceling"결과에 따라 "오랜 시간 동안" 이 방법이 효과가 있다고 생각 했으므로 실패했습니다.

이제는 사용자가 알람을 취소하고 앱을 열 때마다 새로운 보류 의도 및 알람 관리자가 만들어 지므로 사용자가 먼저 "btn"을 누르지 않고 취소 버튼을 누르면 응용 프로그램이 충돌하지 않고 이미 작동하고 있던 경보가 취소됩니다. 나는 이것이 지금 내가 겪고있는 문제의 일부라고 생각합니다.

나는 그것이 많은 것을 알고 있지만 최대한 간단하게 설명하려고 노력했습니다. 그 모든 것을 읽을 시간을내어 주셔서 감사합니다!

답변

0

"btn"을 클릭하기 전에 공유 환경 설정을 재검토했기 때문에 내 앱이 변경 사항에 응답하지 않았습니다. 공유 환경 설정 부분을 onClick 메소드로 이동 한 후 수정되었습니다.