首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构造TimePickerDialog方法

构造TimePickerDialog方法
EN

Stack Overflow用户
提问于 2015-02-28 20:28:26
回答 1查看 186关注 0票数 0

我得到了4个EditText视图,每个视图都有不同的变量。在单击每个TimePickerDialog视图并每次传递相关参数时,我希望调用一个EditText,因此我试图为此构建一个方法,而不是编写整个代码4次:

代码语言:javascript
复制
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,我使用相关参数调用该方法:

代码语言:javascript
复制
timePickerDialog(getActivity(), mEditText, mHour, mMinute);

我的问题是这两行:

代码语言:javascript
复制
hour = selectedHour; 
minute = selectedMinute;

我知道错误:

代码语言:javascript
复制
Variable 'hour/minute' is accessed from within inner class, needs to be declared final

当将它们更改为final时,会出现以下错误:

代码语言:javascript
复制
Cannot assign a value to final variable

有什么建议让这成为可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-01 13:26:28

让我们从您得到的两条消息开始:

从内部类中访问变量“小时/分钟”,需要声明为“最终”

Java中从匿名内部类访问的任何变量都必须声明为final。

不能将值赋给最终变量

只能为变量赋值一次;实例化它的时间。您尝试重新分配一个值,因此您将得到一条错误消息。

解决方案--:克服这一问题的方法有很多,让我建议更简单的方法。从timePickerDialog()中移除两个int参数,将它们从内部类外部设置为final Integer[] hourMinute = new Integer[1];,并将它们的值从内部类中设置为hourMinute=selectedHour;和hourMinute[0]=selectedMinute

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28786504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档