Как перемещаться по фрагментам, не добавляя их в backstack - PullRequest
0 голосов
/ 22 января 2019

У меня есть 3 Fragments A , B и C .Когда я нажимаю кнопку во фрагменте A , мне приходится переходить к фрагменту B (для его инициализации), который должен неявно переходить к фрагменту C .Между тем, его не следует добавлять в backstack, поэтому, когда я возвращаюсь назад из фрагмента C , он должен возвращаться непосредственно к фрагменту A .Может кто-нибудь сказать, как это сделать?

Я пытался не добавлять его в backstack, но это не сработало.Возвращается NullPointerException при возвращении.

final int fragId = manager
                    .beginTransaction()
                    .replace(R.id.main_container, fragment, MAIN_FRAGMENT_TAG )
                    .commitAllowingStateLoss();

1 Ответ

0 голосов
/ 22 января 2019

, если вы правильно передаете аргумент в свой фрагмент, при извлечении из backStack этот пакет восстанавливается хорошо!

 public class HomeProfileFragment extends Fragment {

    public static HomeProfileFragment newInstance(String name){
        Bundle args = new Bundle();
        args.putString("ARG_NAME",name);
        HomeProfileFragment fragment = new HomeProfileFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String name = getArguments().getString("ARG_NAME");
    }
}

и просто используйте замену для добавления в backStack:

getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.frag_container, fragment, fragment.getClass().getSimpleName())
                .addToBackStack(fragment.getClass().getSimpleName()).commit();

и реализуйтеonBackPressed():

@Override
public void onBackPressed() {
    if (fragmentManager.getBackStackEntryCount() > 0)
        fragmentManager.popBackStack();
    else
        super.onBackPressed();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...