因此,我有 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? 在过去的两天里,我一直在寻找解决方案,但找不到任何可行的方法。
答案 0 :(得分:0)
您不需要任何界面,使用startActivityForResult
方法而不是startActivity
,HERE中的一些文档和示例
答案 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()
}