time-duration-picker
time-duration-picker copied to clipboard
getFragmentManager() is now deprecated
creating a new instance should use getSupportFragmentManager()
new PickerDialogFragment().show(getFragmentManager(), "dialog");
any work arounds available?
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) }