当前位置:编程学习 > wap >>

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;

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 时间控件
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,