TimePicker 在每个 TextView 中显示相同的时间

TimePicker showing same time in every TextView

我正在开发一个模块,我必须允许用户在不同的文本视图中设置 3 个不同的时间,因为我正在使用 TimePicker。

但是每当我 select 在 TimePicker 中计时时,它会在其他两个 TextView 中显示相同的时间。

那么可能是什么原因呢?

private String textViewTime1, textViewTime2, textViewTime3;
private String mTime1, mTime2, mTime3;

// On clicking Time picker
    public void setTime(View v){
        Calendar now = Calendar.getInstance();
        TimePickerDialog tpd = TimePickerDialog.newInstance(
                this,
                now.get(Calendar.HOUR_OF_DAY),
                now.get(Calendar.MINUTE),
                false
        );
        tpd.setThemeDark(false);
        tpd.show(getFragmentManager(), "Timepickerdialog");
    }

// Obtain time from time picker
    @Override
    public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
        mHour = hourOfDay;
        mMinute = minute;
        if (minute < 10) {
            mTime1 = hourOfDay + ":" + "0" + minute;
            mTime2 = hourOfDay + ":" + "0" + minute;
            mTime3 = hourOfDay + ":" + "0" + minute;
        } else {
            mTime1 = hourOfDay + ":" + minute;
            mTime2 = hourOfDay + ":" + minute;
            mTime3 = hourOfDay + ":" + minute;
        }
        textViewTime1.setText(mTime1);
        textViewTime2.setText(mTime2);
        textViewTime3.setText(mTime3);
    }

But whenever I select time in TimePicker it showing same time in other two TextViews.

因为,你设置的时间是一样的!

@Override
    public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
        mHour = hourOfDay;
        mMinute = minute;
        if (minute < 10) {
            /// Time set to mTime1
            mTime1 = hourOfDay + ":" + "0" + minute;
            /// Time set to mTime2 same
            mTime2 = hourOfDay + ":" + "0" + minute;
            /// Time set to mTime3 same
            mTime3 = hourOfDay + ":" + "0" + minute;
        } else {
            /// Time set to mTime1
            mTime1 = hourOfDay + ":" + minute;
            /// Time set to mTime2 same
            mTime2 = hourOfDay + ":" + minute;
            /// Time set to mTime3 same
            mTime3 = hourOfDay + ":" + minute;
        }
        textViewTime1.setText(mTime1);
        textViewTime2.setText(mTime2);
        textViewTime3.setText(mTime3);
    }

// 从时间选择器获取时间

 @Override
    public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
        mHour = hourOfDay;
        mMinute = minute;

因为每次都在一个方法中设置所有三个时间并在文本视图中设置。 仔细核对,重新编码。

    if (minute < 10) {
            mTime1 = hourOfDay + ":" + "0" + minute;
            mTime2 = hourOfDay + ":" + "0" + minute;
            mTime3 = hourOfDay + ":" + "0" + minute;
        } else {
            mTime1 = hourOfDay + ":" + minute;
            mTime2 = hourOfDay + ":" + minute;
            mTime3 = hourOfDay + ":" + minute;
        }
        textViewTime1.setText(mTime1);
        textViewTime2.setText(mTime2);
        textViewTime3.setText(mTime3);
    }

您可能错过了回调的目标对象,因此您覆盖了所有文本视图。你应该使用类似这样的东西:

if(view belongs to textViewTime1)
    textViewTime1.setText(mTime1);
if(view belongs to textViewTime2)
    textViewTime2.setText(mTime2);
if(view belongs to textViewTime3)
    textViewTime3.setText(mTime3);

如果不了解 view 实际是什么以及它是如何连接的,我无法帮助您解决 if 条件。

我快速回顾了 ReminderAddActivity and TimePickerDialog,您需要将 TimePickerDialog 应用于每个独立的文本视图。最后多次使用该控件,而不是将其一起破解。如果不重写您正在使用的库,它不会以这种方式工作。