片段应该是静态的,以便它们可以由系统重新实例化,而匿名类不是静态的

时间:2016-12-21 10:30:42

标签: android android-fragments

以下代码显示以下错误:

“碎片应该是静态的,以便它们可以被系统重新实例化,而匿名类不是静态的”

我该如何解决?

public void A(){
    final DialogFragment dialogFragment =
        new DialogFragment() {

        @Override
        public Dialog onCreateDialog(Bundle bundle) {
            AlertDialog.Builder builder =
                new AlertDialog.Builder(getActivity());

            builder.setMessage("Hello");
            builder.setPositiveButton("OK",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog,
                                        int which) {
                        B();
                    }
                }
            );

            return builder.create();
        }
    };
}

private void B() {
    //...
}

1 个答案:

答案 0 :(得分:5)

读取片段生命周期你应该像这样使用

public static class MyAlertDialogFragment extends DialogFragment {

    public static MyAlertDialogFragment newInstance(int title) {
        MyAlertDialogFragment frag = new MyAlertDialogFragment();
        Bundle args = new Bundle();
        args.putInt("title", title);
        frag.setArguments(args);
        return frag;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        int title = getArguments().getInt("title");

        return new AlertDialog.Builder(getActivity())
                .setIcon(R.drawable.alert_dialog_icon)
                .setTitle(title)
                .setPositiveButton(R.string.alert_dialog_ok,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((FragmentAlertDialog)getActivity()).doPositiveClick();
                        }
                    }
                )
                .setNegativeButton(R.string.alert_dialog_cancel,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((FragmentAlertDialog)getActivity()).doNegativeClick();
                        }
                    }
                )
                .create();
    }
}