如何在对话框中用容器视图替换片段

Posted

技术标签:

【中文标题】如何在对话框中用容器视图替换片段【英文标题】:How to replace fragment with cointainerviewId in a Dialogbox 【发布时间】:2018-03-16 10:40:52 【问题描述】:

我必须用片段替换 id,这是我的来源:

 public void showEmojiDialog() 
    final Dialog dialog = new Dialog(MainActivity.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setCancelable(false);
    dialog.setContentView(R.layout.activity_check);
    mEditEmojicon1 = (EmojiconEditText) dialog.findViewById(R.id.editEmojicon1);
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.editEmojicon1, EmojiconsFragment.newInstance(false))
            .commit();
    Button dialogButton = (Button) dialog.findViewById(R.id.send_btn);
    dialogButton.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            dialog.dismiss();
        
    );

    dialog.show();


这里面临的问题:

getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.editEmojicon1, EmojiconsFragment.newInstance(false))
        .commit();

原因:java.lang.IllegalArgumentException:未找到片段 EmojiconsFragment1f7f3e0d #0 id=0x7f0d007c 的 id 0x7f0d007c (com.sample.testapplication:id/editEmojicon1) 的视图

我很困惑将 id R.id.editEmojicon1 替换为 EmojiconsFragment,但是当我在对话框中时,它没有得到它的视图。

这是我想在对话框中显示的内容。

【问题讨论】:

你到底想做什么?您是否尝试在对话框中显示EmojiconsFragment @Daniel Nugent 是的。我可以在活动中显示,但在自定义对话框中显示时遇到问题 【参考方案1】:

getChildFragmentManager()代替getSupportFragmentManager()

【讨论】:

getChildFragmentManager() 是一个片段的方法。我的 Activity 扩展了我在其中使用对话框的 AppCompatActivity。

以上是关于如何在对话框中用容器视图替换片段的主要内容,如果未能解决你的问题,请参考以下文章

无法在对话框片段中的文本视图上设置文本

片段对话框中的片段膨胀引发错误“片段未创建视图”

如何在 PyQt5 中用另一个小部件替换一个小部件

在导航到下一个片段时在底部导航视图中打开警报对话框

工具栏视图引用从对话框片段返回后变为空

如何在android studio中用另一个片段替换一个片段