例如说A 界面有三个 A B C Fragment 现在在B Fragment 里面, 需要跳转B Activity ,当B Activity 调用Finish 时,需要跳转到C Fragment 里面此时就需要以下操作
public class EventBusUtils {
/**
* 绑定 接受者
* @param subscriber
*/
public static void register(Object subscriber) {
EventBus.getDefault().register(subscriber);
}
/**
* 解绑定
* @param subscriber
*/
public static void unregister(Object subscriber){
EventBus.getDefault().unregister(subscriber);
}
/**
* 发送消息(事件)
* @param event
*/
public static void sendEvent(Event event){
EventBus.getDefault().post(event);
}
/**
* 发送 粘性 事件
*
* 粘性事件,在注册之前便把事件发生出去,等到注册之后便会收到最近发送的粘性事件(必须匹配)
* 注意:只会接收到最近发送的一次粘性事件,之前的会接受不到。
* @param event
*/
public static void sendStickyEvent(Event event){
EventBus.getDefault().postSticky(event);
}
}
public class EventCode {
/** 是否显示所选的fragment */
public static final int IS_SHOW = 0x000003;
}
在B Activity 里面写
EventBusUtils.sendStickyEvent(Event(EventCode.IS_SHOW,"NO"))
在接受A Activity 里面写
记得在类的开头加上注解 @BindEventBus
@Subscribe(threadMode = ThreadMode.MAIN)
fun onMessage(event: Event<String>) {
if (event.code == EventCode.IS_SHOW) {
myViewBinding.tablayout.getTabAt(2)?.select()
//gettabAT(第几个tab)
}
}
不喜勿喷