这几天需要将之前项目用到的一个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也会轻松很多