Android-调用同一日期选择器的两个按钮必须单击两次才能工作
我有一个活动,有两个按钮调用同一个日期选择器。 我的活动必须处理日期间隔。一个按钮用于设置“开始”日期,另一个按钮用于设置“结束”日期 在创建活动之后,如果我单击任何我想要的按钮,它就会工作得很好:它会正确地调用日期选择器,并且运行顺利。如果我点击积极按钮,它会按照预期完成所有工作,但是如果我想再次调用日期选择器,我必须点击两次,因为我第一次点击按钮时,它什么也不做 因此,总结一下:Android-调用同一日期选择器的两个按钮必须单击两次才能工作,android,android-button,android-datepicker,Android,Android Button,Android Datepicker,我有一个活动,有两个按钮调用同一个日期选择器。 我的活动必须处理日期间隔。一个按钮用于设置“开始”日期,另一个按钮用于设置“结束”日期 在创建活动之后,如果我单击任何我想要的按钮,它就会工作得很好:它会正确地调用日期选择器,并且运行顺利。如果我点击积极按钮,它会按照预期完成所有工作,但是如果我想再次调用日期选择器,我必须点击两次,因为我第一次点击按钮时,它什么也不做 因此,总结一下: 点击一个按钮;它工作得很好 点击负片按钮;一切正常 再次点击;同样,它工作正常 点击正面按钮;它起作用了 单击
- 点击一个按钮;它工作得很好
- 点击负片按钮;一切正常
- 再次点击;同样,它工作正常
- 点击正面按钮;它起作用了
- 单击一个按钮(两个按钮中的任意一个);除了在短时间内显示按钮处于按下状态外,不执行任何操作
- 再次点击;它按预期工作
private int mYear;
private int mMonth;
private int mDay;
private Date fromDate, toDate;
private Button fromBtn, toBtn;
Calendar cal;
DatePickerDialog datePicker;
static final int DATE_DIALOG_ID = 0;
private int pressedBtn=-1; // 0=from & 1=to
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
cal = Calendar.getInstance();
mYear = cal.get(Calendar.YEAR);
mMonth = cal.get(Calendar.MONTH);
mDay = cal.get(Calendar.DAY_OF_MONTH);
cal.add(Calendar.MONTH, +1);
this.toDate = cal.getTime();
cal.add(Calendar.MONTH, -2);
this.fromDate = cal.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
fromBtn = (Button) findViewById(R.id.frombtn);
fromBtn.setText(dateFormat.format(fromDate));
toBtn = (Button) findViewById(R.id.tobtn);
toBtn.setText(dateFormat.format(toDate));
datePicker = new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay);
updateDisplay();
}
public void setData(View target) {
switch(target.getId()) {
case R.id.frombtn:
pressedBtn = 0;
cal.setTime(fromDate);
break;
case R.id.tobtn:
pressedBtn = 1;
cal.setTime(toDate);
break;
}
mYear = cal.get(Calendar.YEAR);
mMonth = cal.get(Calendar.MONTH);
mDay = cal.get(Calendar.DAY_OF_MONTH);
datePicker.updateDate(mYear, mMonth, mDay);
showDialog(DATE_DIALOG_ID);
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return datePicker;
}
return null;
}
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
updateDisplay();
}
};
private void updateDisplay() {
Date date = new Date(mYear-1900, mMonth, mDay);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
if(this.pressedBtn==0) {
this.fromDate = data;
daBtn.setText(dateFormat.format(fromDate));
}
else if(this.pressedBtn==1){
this.toDate = data;
aBtn.setText(dateFormat.format(toDate));
}
toDate.setHours(23);
toDate.setMinutes(59);
toDate.setSeconds(59);
fromDate.setHours(0);
fromDate.setMinutes(0);
fromDate.setSeconds(0);
//riparte storico
progDialog = ProgressDialog.show(MyActivity.this, "", "Doing stuff with dates...", true, true);
Thread thrd = new Thread()
{
public void run() {
...
}
};
thrd.start();
}
}
下面是布局图:
<Button
android:id="@+id/frombtn"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:background="@drawable/textedit_state"
android:onClick="setData" />
<Button
android:id="@+id/tobtn"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:background="@drawable/textedit_state"
android:onClick="setData" />
我认为这与焦点有冲突,但我使用了
android:focusable=“false”
及
android:focusableInTouchMode=“false”
对于两个按钮。我在视图中没有任何其他可单击的项目
我甚至尝试过为按钮制作两种不同的方法,两种不同的选择器和两种不同的onDateSetListener;什么都没有改变
对不起,如果我不是很清楚,但我是意大利人
所以,提前感谢您的帮助