在活动上按下后退按钮后,将片段中的侦听器设置为

时间:2020-10-14 08:52:53

标签: android kotlin listener

因此,我有 MyFragment ,从中单击按钮即可启动 MyActivity 。参加活动后,我想返回到片段,我想宣布我刚来自该活动的片段并显示横幅。

这是我的活动:

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()
    }
}

这是实现活动接口的片段:

public class MyFragment extends Fragment implements MyActivity.OnBackButtonClickListener {
   ....

   @Override
    public void onBackButtonClick() {
       //show banner
   }
     

我的问题是:我的片段如何知道我只是来自该特定活动?我在片段内的哪里设置onClickListener? 在过去的两天里,我一直在寻找解决方案,但找不到任何可行的方法。

2 个答案:

答案 0 :(得分:0)

您不需要任何界面,使用startActivityForResult方法而不是startActivityHERE中的一些文档和示例

答案 1 :(得分:0)

这不是处理这种情况的好方法。好的方法如下:

开始活动以获取片段结果

startActivityForResult(intent, REQUEST_CODE)

并覆盖片段中的onActivityResult()

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)
}

当您从活动中回来时,它将被呼叫。

关于您的活动

backBtn.setOnClickListener {
   setResult(AppCompatActivity.RESULT_OK)
   this.onBackPressed()
}
相关问题