这几天需要将之前项目用到的一个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;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubView 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 stubthis.title.setText(title);this.content.setText(content);}}
这样,就保证return view肯定能够被正确返回,在refresh中的debug也会轻松很多
没有早一步,也没有晚一步,刚好遇上了你!