我得到了4个EditText视图,每个视图都有不同的变量。在单击每个TimePickerDialog视图并每次传递相关参数时,我希望调用一个EditText,因此我试图为此构建一个方法,而不是编写整个代码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有什么建议让这成为可能吗?
发布于 2015-03-01 13:26:28
让我们从您得到的两条消息开始:
从内部类中访问变量“小时/分钟”,需要声明为“最终”
Java中从匿名内部类访问的任何变量都必须声明为final。
不能将值赋给最终变量
只能为变量赋值一次;实例化它的时间。您尝试重新分配一个值,因此您将得到一条错误消息。
解决方案--:克服这一问题的方法有很多,让我建议更简单的方法。从timePickerDialog()中移除两个int参数,将它们从内部类外部设置为final Integer[] hourMinute = new Integer[1];,并将它们的值从内部类中设置为hourMinute=selectedHour;和hourMinute[0]=selectedMinute。
https://stackoverflow.com/questions/28786504
复制相似问题