当前位置: 代码迷 >> Android >> 闹钟有关问题(急)
  详细解决方案

闹钟有关问题(急)

热度:60   发布时间:2016-05-01 10:35:47.0
闹钟问题(急)
我想在点击button按钮时取消第二个闹钟,可是它照样闹了,请教下高人,问题出在哪?
public class MainActivity extends Activity {
private Button btn;
private final static String tag_one = "ALARM_ONE";
private final static String tag_two = "ALARM_TWO";
private final static int requestcode_1 =1;
private final static int requestcode_0 =0;
private Alarm alarm;
private MyBroadcastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) this.findViewById(R.id.button1);
btn.setOnClickListener(btnlistener);
alarm = new Alarm(this ,18 ,50 ,tag_one ,requestcode_0);
alarm.setReminder();
alarm = new Alarm(this ,18 ,51 ,tag_two ,requestcode_1);
alarm.setReminder();

}
private OnClickListener btnlistener = new OnClickListener(){

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
alarm.closealarm(MainActivity.this,requestcode_1);
}};
public class MyBroadcastReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(tag_one)){
Toast.makeText(context, "第一个闹钟响了!", Toast.LENGTH_LONG).show();
alarm.closealarm(MainActivity.this,requestcode_0);
}
if(intent.getAction().equals(tag_two)){
Toast.makeText(context, "第二个闹钟响了!", Toast.LENGTH_LONG).show();
alarm.closealarm(MainActivity.this,requestcode_1);
}


}

}
@Override
protected void onResume() {
// TODO Auto-generated method stub
receiver=new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();          
filter.addAction(tag_one); //动态注册BroadcastReceiver
filter.addAction(tag_two);
registerReceiver(receiver, filter); 
super.onResume();
}

}

public class Alarm {
private Context context;
private int hourOfDay;
private int minute;
private String tag;
public int ruquest;
public Alarm(Context context ,int hour ,int minute ,String tag ,int requestcode){
this.context = context;
this.hourOfDay = hour;
this.minute = minute;
this.tag = tag;
this.ruquest = requestcode;
}
public void setReminder(){
AlarmManager mAlarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent();
intent.setAction(tag);
PendingIntent pending  = PendingIntent.getBroadcast(context, ruquest, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
mAlarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pending);
  相关解决方案