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



因此,我有MyFragment,从单击按钮开始MySactivity。一旦我参加了活动,我想回到我的片段,我想宣布我刚刚从该活动中获得的片段,并显示一条横幅。

这是我的活动:

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?在过去的两天里,我一直在寻找解决方案,但没有找到任何有效的解决方案。

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

从您的片段开始活动以获取结果

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

您不需要任何接口,使用startActivityForResult方法而不仅仅是startActivity,HERE 中的一些文档和样本

最新更新