Android ViewPager片段已添加到DialogFragment中

Android ViewPager片段已添加到DialogFragment中,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我有一个片段与ViewPager,这是我期待的工作。在片段A的底部,我有一个按钮,显示一个新的对话框片段和一个新的ViewPager。 当我点击按钮并弹出DialogFragment时,我发现了以下错误: java.lang.IllegalStateException: Fragment already added DialogFragment中的代码: public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {

我有一个片段与ViewPager,这是我期待的工作。在片段A的底部,我有一个按钮,显示一个新的对话框片段和一个新的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();
}

问题出在哪里?

请参阅@EpicPandaForce中的第3页是的,已修复该问题,但尚未生效!您可能不应该在ViewPager中放置DialogFragment。但我必须在被剪切的堆栈跟踪中了解更多它失败的原因off@EpicPandaForce先生,我用堆栈跟踪更新了我的问题,你可以看一下吗?@EpicPandaForce问题解决了(有点)。我应该在onCreateView回调中编写所有代码,而不是在onCreateDialog回调中。
   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)