我是一个activity容器加载了三个fragment。需求是,外部跳转进activity会传进来一个值,当fragment 1获取到activity接收的值,会发送eventbus 消息, fragment 2 中通过eventbus接收到传递的消息后,会改变一个按钮的状态,现在的问题我在fragment1中通过Intent接收到值以后发送eventbus,fragment 2接收不到。我在activity发送eventbus,fragment2也接收不到,但是在fragment 1通过按钮点击事件发送eventbus,ffragment2 就可以接收到。大佬们能看看问题出在哪里吗,实在搞不出来了
//fragment1
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_map, container, false);
EventBus.getDefault().register(this);
mMapView = inflate.findViewById(R.id.map);
//获取地图对象
aMap = mMapView.getMap();
initLocation();
//初始化地图
initMap(savedInstanceState);
Intent intent = getActivity().getIntent();
json = intent.getStringExtra("json");
Button button = inflate.findViewById(R.id.button);
//接收到父activity 的intent值后发送就接收不到
if (json != null && !json.equals("")) {
setImportLine(json);
Log.i("qqqqq接收到json", "我确实接收到这里了哦");
EventBus.getDefault().post(EventBusType.ROUTE_START);
}
//点击按钮发送就可以正常接收
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post(EventBusType.ROUTE_START);
}
});
//fragment2
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(EventBusType event) {
switch (event) {
case ROUTE_START:
Glide.with(this).load(R.drawable.execute).into(map_route_execute);
Log.i("qqqqqqq到这里了6","接收到这里了");
break;
case MAP_TYPE_EDIT:
Glide.with(this).load(R.drawable.route_edit).into(map_route_execute);
Log.i("qqqqqqq到这里了5","接收到这里了");
break;
}
}