![](/img/trans.png)
[英]How can I listen for events in my activity waiting for a computation to finish?
[英]How can i listen for Fragment change in my Activity?
我有一個基於意圖打開 Fragment1 或 Fragment2 的活動。
如果用戶在 Fragment1 中完成某些事情后的活動,我將 Fragment2 替換為 Fragment2,甚至可以直接從 Fragment1 完成。
對於每個 Fragment,我必須更改我的 BottomAppBar 中的項目,直到我處於 Activity 中,我對它沒有任何問題,因為我只做了一個 function,它根據傳入的值更改 bottomAppBar 項目。
問題是當.replace
直接從片段中調用時。
所以我堅持是否可以設置一個“FragmentListener”來監聽我的Activity中的片段變化並從中調用function..
我的 function 看起來像這樣:
private fun changeBottomBar(corpo: Boolean = false) {
if (corpo) {
binding.bottomAppBar.navigationIcon = ContextCompat.getDrawable(
this,
R.drawable.ic_baseline_menu_24
)
binding.bottomAppBar.menu.findItem(R.id.filter).isVisible = false
binding.bottomSheetTestata.titleBottomSheet.text = "Modifica Documento"
bottomSheetTestataBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
binding.bottomAppBar.menu.findItem(R.id.testata).isVisible = tipo != "Etichette"
}else {
binding.bottomAppBar.navigationIcon = null
binding.bottomAppBar.menu?.findItem(R.id.testata)?.isVisible = false
binding.bottomAppBar.menu?.findItem(R.id.filter)?.isVisible = true
binding.bottomSheetTestata.titleBottomSheet.text = "Nuovo Documento"
clearTestata()
bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
}
}
我為每個.replace
調用它,如果 Fragment 是 Fragment2 我傳遞給它corpo = true
您可以使用 EventBus 開源庫來訂閱和發布事件。
https://greenrobot.org/eventbus/
發布活動
//In fragment
EventBus.getDefault().post(new MessageEvent());
對於 Activity 中的訂閱事件
//In Activity
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {/* Do something */};
為事件定義自定義 model class
public static class MessageEvent { /* Additional fields if needed */ }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.