【问题标题】:How to set time picker in Fragment如何在 Fragment 中设置时间选择器
【发布时间】:2015-08-12 11:45:14
【问题描述】:

在我的应用程序中,我有两个editText,一个用于日期,另一个用于时间选择器。日期选择器工作正常,但时间选择器抛出错误。

这是我的代码:

    EditText searchDate;
    EditText searchTime;
    DatePickerDialog searchDatePickerDialog;
    TimePickerDialog timePickerDialog;
    SimpleDateFormat timeFormatter;
    SimpleDateFormat dateFormatter;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.search, container,false);


    searchDate = (EditText)view.findViewById(R.id.search_date);
    searchDate.setInputType(InputType.TYPE_NULL);
    searchTime = (EditText)view.findViewById(R.id.search_time);
    searchTime.setInputType(InputType.TYPE_NULL);
  
  searchDate.setOnClickListener(this);
        searchTime.setOnClickListener(this);

        dateFormatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
        searchDate.setText(dateFormatter.format(new Date()));

        timeFormatter = new SimpleDateFormat("HH:mm:ss",Locale.US);
        searchTime.setText(timeFormatter.format(new Date()));

        Calendar newCalendar = Calendar.getInstance();


        searchDatePickerDialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                searchDate.setText(dateFormatter.format(newDate.getTime()));
            }

        },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));

        timePickerDialog = new TimePickerDialog(getActivity(), new TimePickerDialog.OnTimeSetListener() {

            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                Calendar c = Calendar.getInstance();
                c.set(hourOfDay,minute);
                searchTime.setText(timeFormatter.format(c.getTime()));
            }
        },newCalendar.get(Calendar.HOUR_OF_DAY),newCalendar.get(Calendar.MINUTE));

        return view;
    }

    @Override
    public void onClick(View v) {
        if (v == searchDate) {
            searchDatePickerDialog.show();
        }
        else if (v == searchTime){
            timePickerDialog.show();
        }
    }

这就是我得到的错误:

无法解析构造函数 'TimePickerDialog( android.support.v4.app.FragmentActivity,匿名 android.app.TimePickerDialog.OnTimeSetListener,int,int)'

【问题讨论】:

  • 您用于 timepicker 的构造函数似乎无效...您在编译时或运行时收到此错误?
  • 我在做什么?请修复
  • 这是构造函数声明。 public TimePickerDialog(Context context, android.app.TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView) .. 您可能需要添加一个布尔值作为最后一个参数
  • 任何人编辑我的代码并发布

标签: android


【解决方案1】:

正如@Boss 所说,您需要添加一个布尔值作为最后一个参数。发布代码以关闭问题。他的功劳。

timePickerDialog = new TimePickerDialog(getActivity(), new TimePickerDialog.OnTimeSetListener() {

            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                Calendar c = Calendar.getInstance();
                c.set(Calendar.HOUR_OF_DAY, hourOfDay);
                c.set(Calendar.MINUTE, minute);
                searchTime.setText(timeFormatter.format(c.getTime()));
            }
        },newCalendar.get(Calendar.HOUR_OF_DAY),newCalendar.get(Calendar.MINUTE), true);

【讨论】:

  • 是的,现在它可以工作了,但是当我在选择器中选择时间时,它的抛出错误就像 java.lang.ArrayIndexOutOfBoundsException: length=17; index=19 at java.util.Calendar.set(Calendar.java:1122) at com.h2o.SearchFragment$3.onTimeSet(SearchFragment.java:124) 在这一行 newDate.set(hourOfDay,minute);
  • 是的,我很高兴这样做了。如果需要,您可以关闭问题。赛亚!
  • @Appu 如果它有助于解决您的问题,请接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
相关资源
最近更新 更多