在我的片段中有很多微调器和编辑文本,提交按钮是保存数据,重置按钮是重置所有元素(编辑文本和旋转器)。我使用了以下代码来重置所有控件
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(this).attach(this).commit();
但它没有清除editext。重置所有微调器,但editext的文本保持不变
答案 0 :(得分:0)
detach()。detach()在支持库更新25.1.0之后无法运行(可能更早)。更新后此解决方案正常工作:
注意:强>
使用runOnUiThread()来使用commitNowAllowingStateLoss
getSupportFragmentManager()
.beginTransaction()
.detach(oldFragment)
.commitNowAllowingStateLoss();
getSupportFragmentManager()
.beginTransaction()
.attach(oldFragment)
.commitAllowingStateLoss();
答案 1 :(得分:0)
试试这个:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.remove(this).replace(R.id.container, YourFragment.newInstance());;
ft.commit();
性能说明:如果您只是更换片段只是为了重置值,那么最好手动重置值,因为与手动重置值相比,替换整个片段需要大量额外开销。