Android-调用同一日期选择器的两个按钮必须单击两次才能工作

Android-调用同一日期选择器的两个按钮必须单击两次才能工作,android,android-button,android-datepicker,Android,Android Button,Android Datepicker,我有一个活动,有两个按钮调用同一个日期选择器。 我的活动必须处理日期间隔。一个按钮用于设置“开始”日期,另一个按钮用于设置“结束”日期 在创建活动之后,如果我单击任何我想要的按钮,它就会工作得很好:它会正确地调用日期选择器,并且运行顺利。如果我点击积极按钮,它会按照预期完成所有工作,但是如果我想再次调用日期选择器,我必须点击两次,因为我第一次点击按钮时,它什么也不做 因此,总结一下: 点击一个按钮;它工作得很好 点击负片按钮;一切正常 再次点击;同样,它工作正常 点击正面按钮;它起作用了 单击

我有一个活动,有两个按钮调用同一个日期选择器。 我的活动必须处理日期间隔。一个按钮用于设置“开始”日期,另一个按钮用于设置“结束”日期

在创建活动之后,如果我单击任何我想要的按钮,它就会工作得很好:它会正确地调用日期选择器,并且运行顺利。如果我点击积极按钮,它会按照预期完成所有工作,但是如果我想再次调用日期选择器,我必须点击两次,因为我第一次点击按钮时,它什么也不做

因此,总结一下:

  • 点击一个按钮;它工作得很好
  • 点击负片按钮;一切正常
  • 再次点击;同样,它工作正常
  • 点击正面按钮;它起作用了
  • 单击一个按钮(两个按钮中的任意一个);除了在短时间内显示按钮处于按下状态外,不执行任何操作
  • 再次点击;它按预期工作
这是我的密码:

公共类MyActivity扩展了ListActivity{

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;什么都没有改变

对不起,如果我不是很清楚,但我是意大利人

所以,提前感谢您的帮助