Вызвать фрагмент из фрагмента и обратно вернуть первый - PullRequest
0 голосов
/ 12 апреля 2019

Я называю один фрагмент с проходной связкой.

  Bundle bundle = new Bundle();
                bundle.putStringArrayList(Constants.Bundle.SESSION_ORDER_ID_LIST,session_order_id);
                bundle.putString(Constants.Bundle.SERVICE_ID,service_id);
                bundle.putString(Constants.Bundle.TOTAL_AMT,total_amount);
                getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.base_frame, CheckoutFragment.newInstance(bundle)).addToBackStack("CheckoutFragment").commit();

Затем во фрагменте оформления заказа на TextView нажмите, я звоню

getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.base_frame, AddressListFragment.newInstance(bundle)).addToBackStack("AddressListFragment").commit();

Затем In AddressListFragment в списке setOnItemClickListener я хочу вспомнить checkoutFragment что мне делать?

1 Ответ

0 голосов
/ 12 апреля 2019

Более простым подходом было бы добавить приведенный ниже код в вашу деятельность

  /**
 * change fragment by calling from other UI parts
 *
 * @param fragment           fragment to be opened
 * @param isBackPressEnabled allow back or not
 */
public void replaceFragment(Fragment fragment, Boolean isBackPressEnabled) {
    String tag = fragment.getClass().getCanonicalName();
    if (getSupportFragmentManager().findFragmentByTag(tag) != null) return;
    if (isBackPressEnabled) {
        getSupportFragmentManager().beginTransaction().replace(R.id.flContainer, fragment, tag)
                .addToBackStack(tag)
                .commitAllowingStateLoss();
    } else {
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.flContainer, fragment, tag)
                .commitAllowingStateLoss();
    }
}

и вызывать вот так из своего фрагмента

if (getActivity() != null) {
  ((BaseActivity) getActivity()).replaceFragment(AddressListFragment.newInstance(bundle), true);
}

, вам не нужно беспокоиться о реализации,Вы можете изменить его в активности в любое время, просто добавив идентификатор контейнера фрагмента, и все готово.

...