这几天需要将之前项目用到的一个fragment加入到dialog中
本来这种情况应该是用dialogFragment完成的,不过又不想以后有修改时又要同时改fragment和dialogfragment
于是就决定将原来的fragment塞进dialog中
在之前的尝试中,不知道我有没有写错,我发现fragment不能动态加入dialog的布局中,只能通过静态布局的方法写在dialog的布局文件
由于之前的fragment写得不好,在调试的时候会到遇到onCreateView不成功,导致静态布局有error
看了郭霖大神的书之后,看到了一种解决方案
就是在fragment的onCreateView中,只做inflate view,而不做其他的操作
在自定义的fragment中,定义一个方法(如:refresh),在refresh()中对view进行处理
如:
public class MyFragment extends Fragment {
TextView title;
TextView content;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view;
view = inflater.inflate(R.layout.fragment_layout,container, false);
title = (TextView) view.findViewById(R.id.dialog_title);
content = (TextView) view.findViewById(R.id.dialog_content);
return view;
}
public void refresh(String title, String content) {
// TODO Auto-generated method stub
this.title.setText(title);
this.content.setText(content);
}
}
这样,就保证return view肯定能够被正确返回,在refresh中的debug也会轻松很多
本文介绍了如何将一个Fragment嵌入到Dialog中,避免使用DialogFragment带来的额外修改工作。在尝试过程中,发现Fragment不能动态添加到Dialog布局,只能静态方式实现。遇到onCreateView不成功的问题后,通过在Fragment的onCreateView中仅初始化视图,并定义一个refresh方法来后续处理视图,从而解决了问题,简化了调试过程。
1596

被折叠的 条评论
为什么被折叠?



