DialogFragment的实例newInstance()已经在上一次学习笔记中实现。我们创建dialog的UI,可以通过重写DialogFragment的两个函数当中的一个来实现,这两个函数是onCreateView()和onCreateDialog(),前者返回view,后者返回dialog,如同通过AlertDialog.Builder构造一样。
重写onCreateView()
重写onCreateView()是fragment的传统方式,适合自定义的对话框,本例适合用于提示框,如下图所示。通过按菜单弹出提示框,提示框由一个TextView,一个EditText和三个Button组成UI。按不同的按钮触发不同的处理。小例子自作范例,按Save和Dismiss按钮,都会调用Activity的onDialogDone()函数,根据用户的实际操作,显示不同的信息。按Help按钮,则弹出一个帮助框。再弹框在稍后学习笔记中实现。
通过onCreateView()设置UI和按键反馈
利用Fragment的onCreateView()来实现对话框的UI和Fragment学习中没有差别,在本例中,我们增加了按钮点击的触发,代码如下:
public class PromptDialogFragment extends DialogFragment implements OnClickListener{
public static PromptDialogFragment newInstance(String prompt){
...略...
}
@Override //通过重写Fragment的onCreateView()实现dialog的UI
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//1、通过inflate,根据layout XML定义,创建view
View v = inflater.inflate(R.layout.prompt_dialog, container,false);
TextView tv = (TextView)v.findViewById(R.id.prompt_message);
tv.setText(getPrompt());
//2、注册三个button的按键监听