@Override
public void onTimeSet(TimePicker arg0, int h, int m) {
// TODO Auto-generated method stub
Map<String,Object> clockmap=new HashMap<String,Object>();
clockmap.put("hour",h);//将h,m放入map中
clockmap.put("minute", m);
Log.d("log1", "log1running");//监视onTimeSet的运行次数
clocklist.add(clockmap);
SimpleAdapter adapter=new SimpleAdapter(MainActivity.this,clocklist,
R.layout.clockinlistview,new String[]{"hour","minute"},new int[]
{R.id.textView1,R.id.textView2});//适配器加载进ListView
list.setAdapter(adapter);
}
},calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE), true).show();
在百度了问题后,各路大神解释是因为onTimeSet()被回调了两次,在按下确定键以及退出对话框时都被执行。解决办法是重写
TimePickerDialog里的onStop()函数。
public class MyTimePickerDialog extends TimePickerDialog {
//创建MyTimePickerDialog继承TimePickerDialog类
public MyTimePickerDialog(Context context, OnTimeSetListener callBack,
int hourOfDay, int minute, boolean is24HourView) {
super(context, callBack, hourOfDay, minute, is24HourView);
// TODO Auto-generated constructor stub
}
//重写onStop()方法
@Override
protected void onStop() {
// TODO Auto-generated method stub
//super.onStop();//注释去这一句
}
}
再使用新的类写就没问题了
new MyTimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker arg0, int h, int m) {
// TODO Auto-generated method stub
Map<String,Object> clockmap=new HashMap<String,Object>();
clockmap.put("hour",h);
clockmap.put("minute", m);
Log.d("log1", "log1running");
clocklist.add(clockmap);
SimpleAdapter adapter=new SimpleAdapter(MainActivity.this,clocklist,R.layout.clockinlistview,new String[]
{"hour","minute"},new int[]{R.id.textView1,R.id.textView2});
list.setAdapter(adapter);
}
},calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE), true).show();
}
转载于:https://my.oschina.net/nearsea/blog/652217