android中时间控件编辑后无效的问题
最近在做一个日期和时间可以一起选择的控件,但是如果点击控件上的加减号,然后点击确定,没问题,如果自己在时间里面那个输入框里面输入数字,就无法保存,有没有大牛知道如何解决呢?代码如下:
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<DatePicker
android:id="@+id/DatePicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TimePicker
android:id="@+id/TimePicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
package cn.com.egova.mobileinspector.community.view;android 时间控件
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import cn.com.egova.mobileinspector.R;
import cn.com.egova.mobileinspector.constance.Format;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.LinearLayout;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
import android.widget.Toast;
public class DateTimeButton extends Button {
public Calendar time = Calendar.getInstance(Locale.CHINA);
public static final SimpleDateFormat format = new SimpleDateFormat(Format.DATA_FORMAT_YMDHMS_EN.toString());
private DatePicker datePicker;
private TimePicker timePicker;
private Button dataView;
private AlertDialog dialog;
// private Activity activity;
public DateTimeButton(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public DateTimeButton(Context context) {
super(context);
init();
}
//增加构造器
public DateTimeButton(Context context,Button dataView){
super(context);
this.dataView = dataView;
}
public AlertDialog dateTimePickerDialog(){
LinearLayout dateTimeLayout = (LinearLayout)LayoutInflater.from(getContext()).inflate(R.layout.date_time_picker, null);
datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.DatePicker);
timePicker = (TimePicker) dateTimeLayout.findViewById(R.id.TimePicker);
if(dataView == null)
init();
timePicker.setIs24HourView(true);
OnTimeChangedListener timeListener= new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
// time.set(Calendar.HOUR_OF_DAY, hourOfDay);
// time.set(Calendar.MINUTE, minute);
}
};
timePicker.setOnTimeChangedListener(timeListener);
OnDateChangedListener dateListener = new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
// time.set(Calendar.YEAR, datePicker.getYear());
// time.set(Calendar.MONTH, datePicker.getMonth());
// time.set(Calendar.DAY_OF_MONTH, datePicker.getDayOfMonth());
}
};
datePicker.init(time.get(Calendar.YEAR), time.get(Calendar.MONTH), time.get(Calendar.DAY_OF_MONTH), dateListener);
timePicker.setCurrentHour(time.get(Calendar.HOUR_OF_DAY));
timePicker.setCurrentMinute(time.get(Calendar.MINUTE));
dialog = new AlertDialog.Builder(getContext()).setTitle("设置日期时间").setView(dateTimeLayout)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
time.set(Calendar.YEAR, datePicker.getYear());
time.set(Calendar.MONTH, datePicker.getMonth());
time.set(Calendar.DAY_OF_MONTH, datePicker.getDayOfMonth());
time.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
time.set(Calendar.MINUTE, timePicker.getCurrentMinute());
updateLabel();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).show();
return dialog;
}
/**
*
*/
private void init() {
this.setBackgroundResource(R.drawable.datebutton_bg);
this.setGravity(Gravity.LEFT);
this.setTextColor(Color.BLACK);
this.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 生成一个DatePickerDialog对象,并显示。显示的DatePickerDialog控件可以选择年月日,并设置
dateTimePickerDialog();
}
});
updateLabel();
}
/**
* 更新标签
*/
public void updateLabel() {
if(dataView != null){
dataView.setText(format.format(time.getTime()));
}
this.setText(format.format(time.getTime()));
}
/**
* @return 获得时间字符串"yyyy-MM-dd HH:mm:ss"
*/
public String getDateString() {
return format.format(time.getTime());
}
public void setDate(String datestr){
try {
time.setTime(format.parse(datestr));
updateLabel();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
补充:移动开发 , Android