我的fragment.java是
public class myFragment1 extends Fragment {
private EditText ettime,etdate;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.create_event_step2, container, false);
toolbar = (Toolbar) view.findViewById(R.id.toolbar);
ettime = (EditText) view.findViewById(R.id.ettime);
etdate = (EditText) view.findViewById(R.id.etdate);
etdate.setOnClickListener(dateDialog());
ettime.setOnClickListener(timeDialog());
return view;
}
private View.OnClickListener timeDialog() {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog gameTypes = new Dialog(getActivity(), android.R.style.Theme_DeviceDefault_Dialog);
gameTypes.requestWindowFeature(Window.FEATURE_NO_TITLE);
gameTypes.setContentView(R.layout.time_popup_layout);
gameTypes.show();
TimePicker tmPk1= (TimePicker) gameTypes.findViewById(R.id.fromtimePicker);
tmPk1.setOnTimeChangedListener(timeChanged());
// TimePicker tmPk2= (TimePicker) gameTypes.findViewById(R.id.totimePicker);
// tmPk2.setOnTimeChangedListener(timeChanged(tmPk2, "to"));
}
};
}
private TimePicker.OnTimeChangedListener timeChanged() {
return new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
String min=(String.valueOf(minute).length()==1?
"0"+String.valueOf(minute):String.valueOf(minute));
step2.put("STime", hourOfDay + ":" + min);
ettime.setText(hourOfDay + ":" + min);
// if (fr.equals("from")) from=hourOfDay+""+minute;
// if (fr.equals("to")) to=hourOfDay+""+minute;
}
};
}
private View.OnClickListener dateDialog() {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog gameTypes = new Dialog(getActivity(),android.R.style.Theme_DeviceDefault_Dialog);
gameTypes.requestWindowFeature(Window.FEATURE_NO_TITLE);
gameTypes.setContentView(R.layout.date_popup_layout);
gameTypes.show();
DatePicker dpk1= (DatePicker) gameTypes.findViewById(R.id.datepk1);
// dpk1.updateDate(Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH);
Calendar today = Calendar.getInstance();
dpk1.init(
today.get(Calendar.YEAR),
today.get(Calendar.MONTH),
today.get(Calendar.DAY_OF_MONTH),
new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view,
int year, int monthOfYear, int dayOfMonth) {
step2.put("GmDate", year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
etdate.setText(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
}
});
}
};
}
我想要的是当我点击编辑文本时
如果时间编辑文本中没有数据..
时间选择器现在显示时间
否则 时间选择器显示时间在编辑文本上
和
如果日期编辑文本中没有数据..
datepicker现在显示日期
否则 日期选择器显示日期在编辑文本上
答案 0 :(得分:0)
拥有自定义的DialogBuilder类,因为您的代码中会有多个对话框使用。
点击time
或datepicker
edittext后,将null
或edittext内容发送到对话框。
如果数据为空,则会显示current time
或today's date
的选择器,
else显示带有预定义数据的选择器(调用时传递给对话框)。
答案 1 :(得分:0)
这方面的诀窍是禁用EditText
,以便键盘在获得焦点时不会打开。您可能还想禁用对它们的关注。
您可以像这样
在XML中执行此操作<EditText
...
android:enabled="false"
android:focusable="false"
/>
或者在您有参考后的代码中
ettime.setEnabled(false);
ettime.setFocusable(false);
如果没有时间输入,您需要在OnClickListeners
添加一点逻辑,将时间设置为当前时间。例如:
EditText editText = (EditText) v;
if (editText.getText().toString().isEmpty()) {
// set current time
} else {
// open dialog
}
要将Date
或Calendar
对象的日期或时间格式化为人类可读的格式,请尝试使用SimpleDateFormat
。
对于日期和时间选择器,我建议this library,它非常简单,可自定义,与许多操作系统版本兼容,看起来很棒。