У меня есть фрагмент A с ViewPager, который работает, как я ожидаю. В нижней части фрагмента A у меня есть одна кнопка, которая показывает новый DialogFragment с новым ViewPager. когда я нажимаю кнопку и появляется DialogFragment, я улавливаю эту ошибку:
java.lang.IllegalStateException: Fragment already added
код в DialogFragment:
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
mAdapter = new AddNewLeitnerViewPagerAdapter(getChildFragmentManager());
mAdapter.addPage("Title" , new TranslationDialogFragment());
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = requireActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_add_new_item_leitner, null);
builder.setView(view);
mPager = view.findViewById(R.id.view_pager_add_new_leitner);
mPager.setAdapter(mAdapter);
return builder.create();
}
коды в ViewPagerAdapter:
public class AddNewLeitnerViewPagerAdapter extends FragmentPagerAdapter {
List<String> titles = new ArrayList<>();
List<Fragment> mFragments = new ArrayList<>();
public AddNewLeitnerViewPagerAdapter(@NonNull FragmentManager fm) {
super(fm,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
}
@NonNull
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
public void addPage(String title,Fragment fragment){
titles.add(title);
mFragments.add(fragment);
notifyDataSetChanged();
}
}
трассировка стека:
java.lang.IllegalStateException: Fragment already added: TranslationDialogFragment{224f367} (d95f88ab-18a5-4474-b75d-ffb9e0c1cdfc) id=0x7f09014d android:switcher:2131296589:0}
at androidx.fragment.app.FragmentStore.addFragment(FragmentStore.java:67)
at androidx.fragment.app.FragmentManager.addFragment(FragmentManager.java:1563)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:405)
at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2167)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1990)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1945)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1847)
at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
в чем проблема ??