Home > database >  MaterialTimePicker fragment not showing up
MaterialTimePicker fragment not showing up

Time:03-22

New to android development. I want to take a time input from user using MaterialTimePicker and show the time in a TextField. MaterialTimePicker fragment is activated using a onClickListener on a Button. Also I'm developing in java and I'm not sure the documentation on material.io website is for java or kotlin.

 btnobj.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            
            timepicker();
        }
    });

void timepicker(){
    MaterialTimePicker picker = new MaterialTimePicker.Builder()
            .setTimeFormat(TimeFormat.CLOCK_24H)
            .setTitleText("Select Start Time")
            .setHour(12)
            .setMinute(10)
            .build();
    picker.show(getSupportFragmentManager(), "starttime");
    txtfieldobj.setText(String.valueOf(picker.getHour()) " : " String.valueOf(picker.getMinute()));
}

ERROR: Currently when I run this code after I click the button a blank page appears for a second and then it goes back to the parent activity.

CodePudding user response:

I tried your example, and your problem is that you need to delete this line

txtfieldobj.setText(String.valueOf(picker.getHour()) " : " String.valueOf(picker.getMinute()));

because it crashes the app with this enter image description here

And if you want to show the date and time after clicking OK, here the code:

private final SimpleDateFormat formatter = new SimpleDateFormat("hh:mm a", Locale.getDefault());

    void timepicker() {
        MaterialTimePicker picker = new MaterialTimePicker.Builder()
                .setTimeFormat(TimeFormat.CLOCK_24H)
                .setTitleText("Select Start Time")
                .setHour(12)
                .setMinute(10)
                .build();
        picker.addOnPositiveButtonClickListener(dialog -> {
            int newHour = picker.getHour();
            int newMinute = picker.getMinute();
            DashBoardActivity.this.onTimeSet(newHour, newMinute);
        });
        picker.show(getSupportFragmentManager(), "starttime");
    }

    private void onTimeSet(int newHour, int newMinute) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, newHour);
        cal.set(Calendar.MINUTE, newMinute);
        cal.setLenient(false);
        String format = formatter.format(cal.getTime());
        txtfieldobj.setText(format);
    }
  • Related