time-duration-picker icon indicating copy to clipboard operation
time-duration-picker copied to clipboard

getFragmentManager() is now deprecated

Open matthewparkes opened this issue 6 years ago • 1 comments

creating a new instance should use getSupportFragmentManager()

new PickerDialogFragment().show(getFragmentManager(), "dialog");

any work arounds available?

matthewparkes avatar Sep 09 '18 03:09 matthewparkes

One workaround from me is to create your own TimeDurationPickerDialogFragment version

class TimeDurationPickerDialogFragment : DialogFragment(), TimeDurationPickerDialog.OnDurationSetListener {
    companion object {
        fun newInstance(duration: Long, listener: Listener): PickerDialogFragment {
            return PickerDialogFragment().apply {
                setListener(listener)
                arguments = Bundle().apply {
                    putLong(DURATION, duration)
                }
            }
        }
    }

    private var listener: Listener? = null

    interface Listener {
        fun onResult(duration: Long)
        fun onCancel()
    }

    fun setListener(listener: Listener) {
        this.listener = listener
    }

    override fun onDurationSet(view: TimeDurationPicker, duration: Long) {
        listener?.onResult(duration)
    }

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        return TimeDurationPickerDialog(activity, this, getInitialDuration(), setTimeUnits())
    }

    private fun setTimeUnits(): Int {
        return TimeDurationPicker.HH_MM
    }

    private fun getInitialDuration(): Long {
        return arguments?.getLong(DURATION) ?: 0
    }

    override fun onCancel(dialog: DialogInterface) {
        super.onCancel(dialog)
        listener?.onCancel()
    }
}

then later use it with fragmentManager

val pdf = TimeDurationPickerDialogFragment.newInstance(0, listener)
fragmentManager?.run { pdf.show(this, tag) }

nongdenchet avatar Nov 19 '19 09:11 nongdenchet