DialogFragment
基于Fragment的DialogFragment。
从代码的编写角度看,Dialog使用起来要更为简单
Android 官方推荐使用 DialogFragment 来代替 Dialog ,可以让它具有更高的可复用性(降低耦合)和更好的便利性(很好的处理屏幕翻转的情况)。
DialogFragment果然有一个非常好的特性(在手机配置变化,导致Activity需要重新创建时
例如旋屏,基于DialogFragment的对话框将会由FragmentManager自动重建,然而基于Dialog实现的对话框则没有这样的能力)。
public class XXXDialogFragment extends DialogFragment {
private static final String FILE_PATH = "file:///android_res/raw/licenses.html";
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder =new AlertDialog.Builder(getActivity());;
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_layout_license, null, false);
WebView webView = (WebView) view.findViewById(R.id.webview);
webView.loadUrl(FILE_PATH);
return builder.setView(view).setPositiveButton(R.string.btn_ok,null).create();
}
防止多次点击
if (!mLisenceFragment.isAdded()) {
mLisenceFragment.show(getFragmentManager(), OPEN_SOURCE_LICENSE_DIALOG_KEY);
}