public class datePick extends Activity{
private DatePicker dp1;
private TimePicker tp1;
private EditText et1;
private EditText et2;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg)
{
switch (msg.what) {
case 1:
 int year=Integer.parseInt(msg.getData().get("year").toString());
 int month=Integer.parseInt(msg.getData().get("year").toString());
 int day=Integer.parseInt(msg.getData().get("year").toString());
 et1.setText("您选择的日期是:"+year+"年"+(month+1)+"月"+day+"日。");
break;
case 2:
 int hourOfDay=Integer.parseInt(msg.getData().get("hourOfDay").toString());
 int minute=Integer.parseInt(msg.getData().get("minute").toString());
 et2.setText("您选择的时间为:"+hourOfDay+"小时"+minute+"分");
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void init()
{
dp1=(DatePicker)findViewById(R.id.dp1);
tp1=(TimePicker)findViewById(R.id.tp1);
et1=(EditText)findViewById(R.id.et1);
et2=(EditText)findViewById(R.id.et2);
}
public void initDate()
{
Calendar calendar=Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH);
int day=calendar.get(Calendar.DAY_OF_MONTH);
dp1.init(year, month, day, new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Message msg=new Message();
msg.what=1;
Bundle bundle=new Bundle();
bundle.putString("year", ""+year);
bundle.putString("month", ""+monthOfYear);
bundle.putString("day", ""+dayOfMonth);
msg.setData(bundle);
handler.sendMessage(msg);
}
});
tp1.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
Message msg=new Message();
msg.what=2;
Bundle bundle=new Bundle();
bundle.putString("hourOfDay", ""+hourOfDay);
bundle.putString("minute", ""+minute);
msg.setData(bundle);
handler.sendMessage(msg);
}
});
}
}
当我选择日期 两个事件根本没触发 求助

解决方案 »

  1.   

    public class datePick extends Activity {
        private DatePicker dp1;
        private TimePicker tp1;
        private EditText et1;
        private EditText et2;
        private Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg)
            {
                switch (msg.what) {
                    case 1:
                        int year = Integer.parseInt(msg.getData().get("year").toString());
                        int month = Integer.parseInt(msg.getData().get("month").toString());//这里要get("month"),还用get("year")就错了
                        int day = Integer.parseInt(msg.getData().get("day").toString());//这里要get("day"),还用get("year")就错了
                        et1.setText("您选择的日期是:" + year + "年" + (month + 1) + "月" + day + "日。");
                        break;
                    case 2:
                        int hourOfDay = Integer.parseInt(msg.getData().get("hourOfDay").toString());
                        int minute = Integer.parseInt(msg.getData().get("minute").toString());
                        et2.setText("您选择的时间为:" + hourOfDay + "小时" + minute + "分");
                        break;
                    default:
                        break;
                }
            }
        };    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            init();
        }    public void init()
        {
            dp1 = (DatePicker) findViewById(R.id.dp1);
            tp1 = (TimePicker) findViewById(R.id.tp1);
            et1 = (EditText) findViewById(R.id.et1);
            et2 = (EditText) findViewById(R.id.et2);
            initDate();//这句你漏了,两个Listener都没注册上,所以你选择日期、时间都是没作用的。
        }    public void initDate()
        {
            Calendar calendar = Calendar.getInstance();
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH);
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            dp1.init(year, month, day, new OnDateChangedListener() {
                @Override
                public void onDateChanged(DatePicker view, int year, int monthOfYear,
                        int dayOfMonth) {
                    Message msg = new Message();
                    msg.what = 1;
                    Bundle bundle = new Bundle();
                    bundle.putString("year", "" + year);
                    bundle.putString("month", "" + monthOfYear);
                    bundle.putString("day", "" + dayOfMonth);
                    msg.setData(bundle);
                    handler.sendMessage(msg);
                }
            });
            tp1.setOnTimeChangedListener(new OnTimeChangedListener() {
                @Override
                public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                    Message msg = new Message();
                    msg.what = 2;
                    Bundle bundle = new Bundle();
                    bundle.putString("hourOfDay", "" + hourOfDay);
                    bundle.putString("minute", "" + minute);
                    msg.setData(bundle);
                    handler.sendMessage(msg);
                }
            });
        }
    }
    代码帮你改了,你看一下注释。
      

  2.   

    确实这里也错了 但是实际上还有一个大错误 倒置debug完全失效 你再猜猜看