So I have MyFragment from where I start MyActivity on a button click. Once I'm on the activity and I want to go back to my fragment I want to announce the fragment that I just came from that activity and display a banner.
Here is my activity :
class MyActivity : AppCompatActivity() {
private var onBackButtonClickListener: OnBackButtonClickListener? = null
...
backBtn.setOnClickListener {
this.onBackPressed()
onBackButtonClickListener?.onBackButtonClick()
}
...
fun setOnBackButtonClick(onBackButtonClickListener: OnBackButtonClickListener) {
this.onBackButtonClickListener = onBackButtonClickListener
}
interface OnBackButtonClickListener {
fun onBackButtonClick()
}
}
Here is my fragment that implements the activity interface :
public class MyFragment extends Fragment implements MyActivity.OnBackButtonClickListener {
....
@Override
public void onBackButtonClick() {
//show banner
}
My question is: how do my fragment know that I just came from that specific activity? Where do I set the onClickListener inside the fragment? I've been looking for a solution for the past 2 days and did not find anything that works.
This is not a good way to handle this situation. A good way can be as following:
Start activity for result from your fragment
startActivityForResult(intent, REQUEST_CODE)
And override onActivityResult()
in your fragment.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if(resultCode == AppCompatActivity.RESULT_OK && requestCode == REQUEST_CODE) {
showBanner() // <---- show banner or do your task here
}
super.onActivityResult(requestCode, resultCode, data)
}
This will get called when your're back from the activity.
On your activity
backBtn.setOnClickListener {
setResult(AppCompatActivity.RESULT_OK)
this.onBackPressed()
}