如何解决Android对话框片段从FragmentManager删除和删除之间的区别
我想了解在Android的DialogFragment内部编写的调用dismiss()和close()方法之间有什么区别。基本上一个给我一个错误,另一个给我一个错误,而我试图理解为什么。
我有一个适用于Android的Java代码,但我正在尝试了解它到底在做什么。 在我的主要活动中,我有一部分代码可以加载对话框:
private void pop_New_Game_Dialogue(boolean is_There_A_Cancel_Button) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("newgamedlg");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
Checkboxlistview new_Game_Dialogue = Checkboxlistview.new_Instance(is_There_A_Cancel_Button);
new_Game_Dialogue.show(ft,"newgamedlg");
}
我从 DialogFragment参考网站上或多或少地复制了我的内容。
在DialogFragment类中,我从xml源中扩展视图,并使用sqlLite数据库初始化各种复选框。
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
int i;
View rootView = inflater.inflate(R.layout.dialogue,container,false);
...
最后,我使用close()命令向按钮添加OnClickListener
cancel_Button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
close();
}
});
close方法是一行这样的代码:
getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();
一切都可以使用它,但是如果我使用dismiss();相反,如果我理解正确,那应该是摆脱FragmentDialogue时调用的正确方法,则会收到以下错误:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
我想了解这个错误的出处以及为什么当我调用close()时为什么没有得到它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。