Skip to content Skip to sidebar Skip to footer

Set Textview To Time From Timepicker - Android

I have been using this tutorial here to create a time picker. I can select the time fine, but I can't get the time selected to show up in my TextView. Java is not my preferred la

Solution 1:

you can do it like that:

1) Solution 1 (better):

publicclassMainActivityextendsActivity {

        TextView resultText;

        @OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            resultText = (TextView)findViewById(R.id./*YOUR TEXT VIEW ID*/);
        }

        //code from: http://developer.android.com/guide/topics/ui/controls/pickers.htmlpublicvoidshowTimePicker(View v) {
            DialogFragmentnewFragment=newTimePickerFragment(resultText);
            newFragment.show(getFragmentManager(), "timePicker");
        }

        publicclassTimePickerFragmentextendsDialogFragmentimplementsTimePickerDialog.OnTimeSetListener {

             TextView mResultText;

             publicTimePickerFragment(TextView textView) {
                mResultText = textView;
            }

            @Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {

                // Use the current time as the default values for the pickerfinalCalendarc= Calendar.getInstance();
                inthour= c.get(Calendar.HOUR_OF_DAY);
                intminute= c.get(Calendar.MINUTE);

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

            publicvoidonTimeSet(TimePicker view, int hourOfDay, int minute) {
                Stringtime=/*CONVERT YOUR TIME FROM hourOfDay and minute*/;
                mResultText.setText(time);
            }
        }
    }

2) Solution 2:

publicclassMainActivityextendsActivity {
    public TextView mResultText;

    @OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mResultText = (TextView)findViewById(R.id./*YOUR TEXT VIEW ID*/);
    }

    //code from: http://developer.android.com/guide/topics/ui/controls/pickers.htmlpublicvoidshowTimePicker(View v) {
        DialogFragmentnewFragment=newTimePickerFragment();
        newFragment.show(getFragmentManager(), "timePicker");
    }

    publicclassTimePickerFragmentextendsDialogFragmentimplementsTimePickerDialog.OnTimeSetListener {

        @Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {

            // Use the current time as the default values for the pickerfinalCalendarc= Calendar.getInstance();
            inthour= c.get(Calendar.HOUR_OF_DAY);
            intminute= c.get(Calendar.MINUTE);

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

        publicvoidonTimeSet(TimePicker view, int hourOfDay, int minute) {
            Stringtime=/*CONVERT YOUR TIME FROM hourOfDay and minute*/;
            mResultText.setText(time);
        }
    }
}

Solution 2:

You can actually use findViewById, as with getActivity() your fragment gets access to the activity it is running in and thus to the views inside the activity.

publicvoidonTimeSet(TimePicker view, int hourOfDay, int minute) {
    TextViewtextView= (TextView) getActivity().findViewById(R.id.my_text_view);
    textView.setText(String.format("%02d", hourOfDay), String.format("%02d", minute);
}

This simple solution should be preferred over passing a reference to the TextView to the fragment, as this reference will be lost on reinstantiation of the fragment (see comment).

Post a Comment for "Set Textview To Time From Timepicker - Android"