Reputation: 343
I am using BottomSheet Dialog from a fragment. I want to reload fragment data after bottomsheet close.
I am trying by adding reload code in onResume method. But it is not working.
Here My BottomSheet Dialog code.
class LoopResponseDialogueFragment : BottomSheetDialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) =
inflater.inflate(R.layout.fragment_loop_response_dialog, container, false)!!
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
var progressDialog = ProgressDialog(context)
acceptButton.setOnClickListener {
priyoLoopService.sendLoopResponse(LoopActionRequest(user.id, "accept"))
.enqueue(object : Callback<GenericLoopResponse> {
override fun onFailure(call: Call<GenericLoopResponse>, t: Throwable) {
}
override fun onResponse(
call: Call<GenericLoopResponse>,
response: Response<GenericLoopResponse>
) {
dismiss()
}
})
}
}
Upvotes: 0
Views: 1989
Reputation: 4528
You can create an interface in your LoopResponseDialogueFragment class and use it inside your fragment. Override onDismiss() and onCancel() function and call the interface function.
LoopResponseDialogueFragment Code:
class LoopResponseDialogueFragment : BottomSheetDialogFragment() {
private lateinit var onBottomSheetCloseListener:OnBottomSheetCloseListener
interface OnBottomSheetCloseListener{
fun onBottomSheetClose()
}
fun setOnBottomSheetCloseListener(listener:OnBottomSheetCloseListener) {
onBottomSheetCloseListener = listener
}
// rest of the code
override fun onDismiss(dialog: DialogInterface)
{
super.dismiss(dialog)
listener.onBottomSheetClose()
}
}
Now in your fragment before calling show method, call setOnBottomSheetCloseListener()
In your Fragment:
dialog.setOnBottomSheetCloseListener(object: OnBottomSheetCloseListener{
override fun onBottomSheetClose()
{
//refresh your data here
}
})
You can add code to refresh the fragment data inside onBottomSheetClose method.
Upvotes: 1