DialogFragment 替代Dialog

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);

                }

你可能感兴趣的:(DialogFragment 替代Dialog)