Шина событий onEvent не реагирует после popBackStackImmediate - PullRequest
0 голосов
/ 15 июня 2019

У меня есть два фрагмента.С первого 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);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...