gpt4 book ai didi

android - 为什么日期对话框要求单击三次以关闭

转载 作者:行者123 更新时间:2023-11-29 18:04:58 27 4
gpt4 key购买 nike

public class QuickIWantActivity extends Activity implements
OnDateSetListener {
.....
.....
.....

dateET.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {

Calendar cal = Calendar.getInstance();
DatePickerDialog datePickDiag = new DatePickerDialog(
QuickIWantActivity.this, QuickIWantActivity.this, cal
.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH));
datePickDiag.show();
return true;
}
});

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {

int month = monthOfYear + 1;
dateET.setText(dayOfMonth + "- " + month + "- " + year);
}

}

因此,在触摸作为 EditText 的 dateET 时,它会打开日期选择器,我设置新日期并单击设置,它不会被取消,我再次单击设置,即使现在它也不会被取消,最后当我被取消时第三次点击设置

最佳答案

onTouch 接收三个事件(正常顺序):

MotionEvent.ACTION_DOWN
MotionEvent.ACTION_MOVE
MotionEvent.ACTION_UP

并且由于您没有检查它们中的任何一个(并返回 true),您的代码被执行了 3 次(每个事件一次)。

解决方法:

使用 onClick()(这是我会做的)或添加检查:

@Override
public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:

Calendar cal = Calendar.getInstance();
DatePickerDialog datePickDiag = new DatePickerDialog(
QuickIWantActivity.this, QuickIWantActivity.this, cal
.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH));
datePickDiag.show();
return false;
}
});
break;
}

关于android - 为什么日期对话框要求单击三次以关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13840759/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com