关于TimePickerDialog中OnTimeSet()函数执行两次的解决方法

@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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值