对话框既能引起用户的注意也可接收用户的输入。在提示重要信息或提供用户选项方面,它都非常有用。
常用的多用途对话框是AlertDialog类,它是Dialog的子类。建议将AlertDialog封装在DialogFragment实例中使用。使用FragmentManager管理对话框,可以更灵活地显示对话框。
1.创建DialogFragment
首先,需要创建DialogFragment的子类:
public class DatePickerFragment extends DialogFragment {
@Override
public Dialog onCreateDialog (Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setTittle(R.string.date_picker_title)
.setPositiveButton(android.R.string.ok, listener)
.create();
}
}
使用AlertDialog.Builder类,以流接口的方式创建了AlertDialog实例。
Android有3种可以用于对话框的按钮:positive按钮、negative按钮以及neutral按钮。用户点击positive按钮接受对话框展现信息。如果同一对话框上放置多个按钮,按钮的类型与命名决定着他们在对话框上显示的位置。
调用setPositiveButton()方法设置positive按钮,需传入两个参数:字符串资源和实现DialogInterface.OnClickListener接口的对象。
2.显示DialogFragment
DialogFragment实例也是由托管activity的FragmentManager管理的。要将DialogFragment添加给FragmentManager管理并放置到屏幕上,可调用DialogFragment.show()方法。
public class CrimeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
FragmentManager manager = getFragmentManager();
DatePickerFragment dialog = new DatePickerFragment();
dialog.show(manager, "DialogDate");
}
3.设置对话框显示内容
使用AlertDialog.Builder的setView()方法,给AlertDialog对话框添加DatePicker组件:
public class DatePiclerFragment extends DialogFragment {
@Override
public Dialog onCreateDialog (Bundle savedInstanceState) {
View v = LayoutInflater.from(getActivity())
.inflate(R.layout.dialog_date, null);
return new AlertDialog.Builder(getActivity())
.setView(v)
.setTittle(R.string.date_picker_title)
.setPositiveButton(android.R.string.ok, listener)
.create();
}
}
定义XML布局,利用LayoutInflater实例化视图对象。然后,将获得的视图对象传入setView()方法中。
网友评论