构建 TimePickerDialog 方法
Building a TimePickerDialog method
我得到了 4 个 EditText 视图,每个视图都有不同的变量。我想在单击每个 EditText 视图时调用 TimePickerDialog 并每次传递相关参数,所以我试图为此构建一个方法而不是编写整个代码 4 次:
public TimePickerDialog timePickerDialog(Context context, final EditText editText, int hour, int minute){
TimePickerDialog timePicker = new TimePickerDialog(context, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int selectedHour, int selectedMinute) {
hour = selectedHour; // This 2 lines are my problem
minute = selectedMinute; // This 2 lines are my problem
editText.setText(selectedHour + ":" + selectedMinute);
editText.setTextColor(Color.BLACK);
}
}, hour, minute, true);
timePicker.setTitle(R.string.select_time);
timePicker.show();
return timePicker;
比起每个 EditText 的 onClick,我调用带有相关参数的方法:
timePickerDialog(getActivity(), mEditText, mHour, mMinute);
我的问题出在这两行:
hour = selectedHour;
minute = selectedMinute;
我收到错误:
Variable 'hour/minute' is accessed from within inner class, needs to be declared final
将它们更改为 final 时出现此错误:
Cannot assign a value to final variable
有什么建议可以使这成为可能吗?
让我们从您收到的两条消息开始:
Variable 'hour/minute' is accessed from within inner class, needs to
be declared final
从匿名内部 class 访问的 Java 中的任何变量都必须声明为最终变量。
Cannot assign a value to final variable
您只能为一个变量赋值一次;你实例化它的时间。您尝试重新分配一个值,因此您将收到一条错误消息。
解决方法:有很多方法可以解决这个问题,让我推荐一个更简单的方法。您从 timePickerDialog()
中删除了两个 int 参数,让它们从内部 class 外部设置为 final Integer[] hourMinute = new Integer[1];
并从内部 class 内部设置它们的值,例如 hourMinute[0]=选定的时间;和 hourMinute[0]=selectedMinute
.
我得到了 4 个 EditText 视图,每个视图都有不同的变量。我想在单击每个 EditText 视图时调用 TimePickerDialog 并每次传递相关参数,所以我试图为此构建一个方法而不是编写整个代码 4 次:
public TimePickerDialog timePickerDialog(Context context, final EditText editText, int hour, int minute){
TimePickerDialog timePicker = new TimePickerDialog(context, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int selectedHour, int selectedMinute) {
hour = selectedHour; // This 2 lines are my problem
minute = selectedMinute; // This 2 lines are my problem
editText.setText(selectedHour + ":" + selectedMinute);
editText.setTextColor(Color.BLACK);
}
}, hour, minute, true);
timePicker.setTitle(R.string.select_time);
timePicker.show();
return timePicker;
比起每个 EditText 的 onClick,我调用带有相关参数的方法:
timePickerDialog(getActivity(), mEditText, mHour, mMinute);
我的问题出在这两行:
hour = selectedHour;
minute = selectedMinute;
我收到错误:
Variable 'hour/minute' is accessed from within inner class, needs to be declared final
将它们更改为 final 时出现此错误:
Cannot assign a value to final variable
有什么建议可以使这成为可能吗?
让我们从您收到的两条消息开始:
Variable 'hour/minute' is accessed from within inner class, needs to be declared final
从匿名内部 class 访问的 Java 中的任何变量都必须声明为最终变量。
Cannot assign a value to final variable
您只能为一个变量赋值一次;你实例化它的时间。您尝试重新分配一个值,因此您将收到一条错误消息。
解决方法:有很多方法可以解决这个问题,让我推荐一个更简单的方法。您从 timePickerDialog()
中删除了两个 int 参数,让它们从内部 class 外部设置为 final Integer[] hourMinute = new Integer[1];
并从内部 class 内部设置它们的值,例如 hourMinute[0]=选定的时间;和 hourMinute[0]=selectedMinute
.