есть ли способ найти идентификатор фрагмента - PullRequest
0 голосов
/ 08 февраля 2020

Я хочу использовать адаптер фрагмента к активности. и я пытаюсь получить доступ к этому

 HomeFragment fragment = (HomeFragment) getFragmentManager().findFragmentById(R.id.);

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

 public void replaceFragment(Fragment fragment, boolean isMainPage, Bundle bundle) {
    String backStateName = fragment.getClass().getName();
    FragmentManager manager = getSupportFragmentManager();
    boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);

    if (bundle != null) {
        fragment.setArguments(bundle);
    }

    System.out.println("isMainPage :: " + isMainPage);
    System.out.println("FRAGMENT NAME :: " + backStateName + " fragmentPopped :: " + fragmentPopped);

    if (!fragmentPopped) { //fragment not in back stack, create it.
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.replace(R.id.main_fragment, fragment);

        if (isMainPage) {
            getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

        }
        int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
        System.out.println("backStackCount :: " + backStackCount);
        transaction.addToBackStack(backStateName);
       /* if (!backStateName.contains("HomeFragment")) {
            transaction.addToBackStack(backStateName);
        }*/


        transaction.commit();
    }
}

1 Ответ

1 голос
/ 08 февраля 2020

Вы использовали

transaction.replace(R.id.main_fragment, fragment);

Поэтому ваш фрагмент находится по id R.id.main_fragment

HomeFragment fragment = (HomeFragment) getFragmentManager().findFragmentById(R.id.main_fragment);
...