У меня есть два фрагмента.С первого CreateFragment
я открываю LocationPickerFragment
с помощью кнопки.Во втором фрагменте у меня есть некоторая информация, и после нажатия на кнопку меню мне нужно опубликовать события и запустить popBackStackImmediate
.После возврата к первому фрагменту метод onEvent
не реагирует.
Первый фрагмент
public class CreateFragment extends Fragment {
private View view;
private FusedLocationProviderClient fusedLocationClient;
private Location currentLocation;
@BindView(R.id.address)
TextView address;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_create, container, false);
ButterKnife.bind(this, view);
setHasOptionsMenu(true);
fusedLocationClient = LocationServices.getFusedLocationProviderClient(getContext());
return view;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
EventBus.getDefault().register(this);
}
@Override
public void onDetach() {
super.onDetach();
EventBus.getDefault().unregister(this);
}
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(com.user.app.model.Location location) {
System.out.println("entered?"); // never gets here
address.setText(location.getAddress());
}
Второй фрагмент (который вызывается в первом фрагменте)
public class LocationPickerFragment extends Fragment {
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_location_picker, container, false);
ButterKnife.bind(this, view);
setHasOptionsMenu(true);
setMap(savedInstanceState);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.location_upbar, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_location_back) {
getFragmentManager().popBackStackImmediate();
} else if (item.getItemId() == R.id.action_location_check) {
EventBus.getDefault().postSticky(new Location().setAddress("some location"))); // this location is my model class not the original one
getFragmentManager().popBackStackImmediate();
}
return super.onOptionsItemSelected(item);
}
}