【问题标题】:Android TextView Updates on double click onlyAndroid TextView 仅在双击时更新
【发布时间】:2015-08-28 17:05:06
【问题描述】:

我从时间选择器对话框中获取时间并将其转换为字符串格式。然后我使用 setText 方法将其设置为 TextView。问题是它设置了字符串,但只有在单击设置时间按钮不少于两次之后。一次尝试,TextView 仍然为空。有什么建议吗?我想要它在文本视图中首次单击时显示数据

beginTime.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


                    openTimePicker(true);

                    onTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
                        @Override
                        public void onTimeSet(TimePicker timePicker, int hour, int min){
                            Calendar calnow = Calendar.getInstance();

                            Calendar calset = (Calendar) calnow.clone();
                            calset.set(Calendar.HOUR_OF_DAY, hour);
                            calset.set(Calendar.MINUTE, min);

                            SimpleDateFormat sdf = new SimpleDateFormat("HHmm");
                          time=sdf.format(calset.getTime());
                            beginTime.setText(time);




                        }
                    };




        }

    });

private void openTimePicker(boolean is24r) {

    Calendar cal = Calendar.getInstance();

    TimePickerDialog timePicker = new TimePickerDialog(this, onTimeSetListener,cal.get(Calendar.HOUR_OF_DAY),cal.get(Calendar.MINUTE),is24r);
    String begin = "TIME";
    timePicker.setTitle(begin);
    timePicker.show();



}

【问题讨论】:

  • 能否提供设置文本的代码?
  • 你能把代码sn-p贴上来看看吗?
  • 我已经添加了代码。

标签: android textview uitextview


【解决方案1】:

因为在openTimePicker,你创建了TimePickerDialog

TimePickerDialog timePicker = new TimePickerDialog(this, onTimeSetListener,cal.get(Calendar.HOUR_OF_DAY),cal.get(Calendar.MINUTE),is24r);

需要onTimeSetListener,但仅在调用openTimePicker 后创建。

所以,在第一次运行时,您创建了一个没有侦听器的对话框,只有在第二次运行或之后,它才被正确设置。

快速修复:只需像这样颠倒顺序

                onTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker timePicker, int hour, int min){
                        Calendar calnow = Calendar.getInstance();

                        Calendar calset = (Calendar) calnow.clone();
                        calset.set(Calendar.HOUR_OF_DAY, hour);
                        calset.set(Calendar.MINUTE, min);

                        SimpleDateFormat sdf = new SimpleDateFormat("HHmm");
                      time=sdf.format(calset.getTime());
                        beginTime.setText(time);




                    }
                };
                openTimePicker(true);

【讨论】:

    【解决方案2】:

    您应该看到与您单击的按钮相关联的侦听器。你需要的是setOnCLickListener

    【讨论】:

    • 看一下代码,我用的是textView监听器,所以当按下时,它能够弹出一个时间对话框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多