首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

两个时间控件的时间没有触发

2013-10-01 
两个时间控件的时间没有触发 求助public class datePick extends Activity{private DatePicker dp1privat

两个时间控件的时间没有触发 求助
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);
}
});
}
}
当我选择日期 两个事件根本没触发 求助
[解决办法]

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);
            }
        });
    }
}


代码帮你改了,你看一下注释。

热点排行