Фрагмент, добавленный из XML, не может быть найден в Backstack - PullRequest
0 голосов
/ 04 апреля 2019

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

Ниже мой xml код

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragOneContainer"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <fragment class="com.myproject.fragments.fragmentname"
        android:id="@+id/frag"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:tag="inspectionSearch">

    </fragment>
</FrameLayout>

Ниже приведен код, который я использовал для получения списка фрагментов

FragmentManager fragmentManager = getFragmentManager();
List<Fragment> fragmentList = fragmentManager.getFragments();
        for(int i=0;i<fragmentList.size();i++){
            Log.d(TAG,"Fragment at "+i+" = "+fragmentList.get(i).getClass().getName());
        }

Примечание. Фрагменты, которые я динамически добавил в fragOneContainer, появлялись в backstack.

Как получить экземпляр фрагмента, который я добавил в xml?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

Если вам нужен только список фрагментов, вы можете получить его с помощью getSupportFragmentManager (). GetFragments (), будь то его динамическое или статическое добавление из файла XML, как показано ниже:

Используйте getSupportFragmentManager (). GetFragments (), как показано ниже:

FragmentManager fragmentManager = getSupportFragmentManager();
List<Fragment> fragmentList = fragmentManager.getFragments();
for(int i=0;i<fragmentList.size();i++){
    Log.d(TAG,"Fragment at "+i+" = "+fragmentList.get(i).getClass().getName());
}

вместо

FragmentManager fragmentManager = InspectionSearchFrame.fm;

мы не можем получить тот фрагмент в backstack, который добавлен в xml, потому что мы должнывручную поместите это в запись backstack.Если вы будете использовать getSupportFragmentManager (). GetBackStackEntryCount (), то вы получите 0 отсчетов, потому что getSupportFragmentManager () не будет подсчитывать фрагменты, добавленные в xml, но все равно может дать вам список с помощью метода getSupportFragmentManager (). GetFragments ().

2 голосов
/ 04 апреля 2019

Фрагменты, добавленные из XML, не сохраняются в backstack.Суть в том, что если вы добавляете фрагмент через xml, он статически размещается, вы не можете заменить его.Если вы хотите backstack, то добавьте этот фрагмент динамически через Java (или Kotlin)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...