Dialogfragment 未清除

Posted

技术标签:

【中文标题】Dialogfragment 未清除【英文标题】:Dialogfragment isn't clearing 【发布时间】:2015-03-29 08:07:27 【问题描述】:

通过一个按钮,我弹出一个包含 RadioGroup 的 DialogFragment(根据 Google 的开发人员文档)。在 DialogFragment 上,我使用 RadioButtons 数组填充 RadioGroup。

我的问题是,当我点击 DialogFragment 上的后退键,然后点击按钮以再次弹出 DialogFragment 时,RadioButtons 数组的行为就好像之前的数组仍然存在(并且新的 RadioButton 索引/ID 值是之前的两倍)。

我怀疑我在 DialogFragment 中的布局正在使用主要活动的上下文,因此 DialogFragment 第二次不是“新鲜”的,但我无法追踪它。任何概念性的建议都会很棒。

编辑:特别是 RadioGroup 的 checkedId 每次我进出 DialogFragment 时都会翻倍:.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() @Override public void onCheckedChanged(RadioGroup group, int checkedId)

【问题讨论】:

请贴一些相关代码。 为了帮助我学习,我希望保持这个概念。如果有帮助,我可以发布代码,但它是来自开发人员文档developer.android.com/reference/android/app/DialogFragment.html 的样板代码,而 DialogFragment 代码本身很简单(我在 onCreateView 中进行布局)。我希望得到一些提示,例如:DialogFragment 是否应该在每次从同一个 Activity/Fragment 弹出时完全新鲜打开?当我点击后退按钮时,如何确保整个 DialogFragment 布局被清除? 【参考方案1】:

尝试手动设置单选按钮的 ID。

【讨论】:

我试过了,但零是唯一可以让我手动添加的 id。我有 14 个单选按钮。第一次,我会在最后检查一个,checkedId 是 10(例如)。然后我回击,回到 DialogFragment,单击相同的单选按钮,checkedId 现在是 20。

以上是关于Dialogfragment 未清除的主要内容,如果未能解决你的问题,请参考以下文章

关闭 dialogFragment 时键盘未关闭

从 DialogFragment 调用的 AsyncTask 中的 ProgressDialog 未显示

显示 DialogFragment 时调用 Fragment 未暂停

DialogFragment 中实现的 videoview 的 MediaController 未正确更新

DialogFragment: DialogFragment的一些理解

Activity与DialogFragment交互的方法