0

我似乎无法将 timePicker 的结果放入 editText 字段。我按照 Android 培训指南中的示例进行操作,我可以在日志中看到 timePicker 的结果,但我不知道如何在文本字段 (tvEndTime) 中显示它们。

public class Setup extends Activity {

....

private final TextView tvEndTime = (TextView) findViewById(R.id.textViewEndTime);

....

public static class TimePickerFragment extends DialogFragment
    implements TimePickerDialog.OnTimeSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current time as the default values for the picker
        final Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        // Create a new instance of TimePickerDialog and return it
        return new TimePickerDialog(getActivity(), this, hour, minute,
        DateFormat.is24HourFormat(getActivity()));
    }

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // Do something with the time chosen by the user
        Log.i(TAG, Integer.toString(hourOfDay) + ":" + Integer.toString(minute));
        tvEndTime.setText(Integer.toString(hourOfDay) + ":" + Integer.toString(minute));
    }
}

// show the end time timePicker dialog box fragment when user clicks buttonEndTime
public void showTimePickerDialog(View v) {
    DialogFragment newFragment = new TimePickerFragment();
    newFragment.show(getFragmentManager(), "timePicker");
}  

....

在线tvEndTime.setText()时,我收到 Eclipse 错误“无法对非静态字段 tvEndTime 进行静态引用”。但是我不能将 tvEndTime 声明为静态的,因为我在 tvEndTime 声明中得到了错误。我究竟做错了什么?

4

3 回答 3

1

将此代码写入您正在使用的任何视图的 onClick() 事件中:

            Calendar mcurrentTime = Calendar.getInstance();
            int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
            int minute = mcurrentTime.get(Calendar.MINUTE);

            TimePickerDialog mTimePicker;
            mTimePicker = new TimePickerDialog(CurrentActivity.this, new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
                    editText.setText( selectedHour + ":" + selectedMinute);
                }
            }, hour, minute, true);
            mTimePicker.setTitle("Select Time");
            mTimePicker.show();

或者:

只需通过以下方式更改您设置文本的方式EditText

tvEndTime.setText(selectedHour+" : "+selectedMinute);

更正:将您TextView tvEndTime作为类的类变量Setup

于 2014-01-11T05:22:05.657 回答
1

更改 tvEndTime.setText 参数没有效果。我通过将 tvEndTime 的声明添加到 onTimeSet 函数中来使其工作(当用户单击按钮时调用 SetEndTime):

public void SetEndTime(View v) {
    Calendar mcurrentTime = Calendar.getInstance();
    int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
    int minute = mcurrentTime.get(Calendar.MINUTE);

    TimePickerDialog mTimePicker;
    mTimePicker = new TimePickerDialog(Setup.this, new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
            TextView tvEndTime = (TextView) findViewById(R.id.textViewEndTime);
            tvEndTime.setText( selectedHour + ":" + selectedMinute);
        }
    }, hour, minute, true);
    mTimePicker.setTitle("Select Time");
    mTimePicker.show();
}  
于 2014-01-11T06:48:18.057 回答
0

tvEndTime.setText(String.valueof(hourOfDay))对所有其他遵循相同的方法这样做

于 2014-01-11T05:21:40.403 回答