Mahbub Mukul
Mahbub Mukul

Reputation: 343

Which lifecycle state called after BottomSheet close?

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

Answers (1)

Ravi Kumar
Ravi Kumar

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

Related Questions