0

我创建了一个扩展类的新DialogFragment类:

public class SaveDataDialog extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        // Get the layout inflater
        LayoutInflater inflater = getActivity().getLayoutInflater();

        // Inflate and set the layout for the dialog
        // Pass null as the parent view because its going in the dialog layout
        builder.setView(inflater.inflate(R.layout.save_data_dialog, null))
        // Add action buttons
                .setPositiveButton(R.string.save_data, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                        Toast.makeText(getActivity(), "Testing positive button", Toast.LENGTH_LONG).show();
                    }
                }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        SaveDataDialog.this.getDialog().cancel();
                    }
                });
        return builder.create();
    }

}

在我的主要活动中的某个地方(在按钮 onClick 内),我想显示这个对话框。所以我尝试了:

SaveDataDialog sdd = new SaveDataDialog();
sdd.getDialog().show();

第二行给出了一个空指针异常。

如何显示对话框?这就是我想做的。

4

3 回答 3

1

尝试

sdd.show();

代替

sdd.getDialog().show();

由于您的对话框扩展了 DialogFragment,因此您不必调用 .getDialog()

更多细节:http ://android-developers.blogspot.com/2012/05/using-dialogfragments.html

于 2013-08-29T22:21:17.957 回答
1

你的SaveDataDialog扩展了一个DialogFragment,你可以调用sdd.show()来显示DialogFragment

于 2013-08-29T22:21:35.513 回答
1

在您的活动中,使用以下代码显示您的对话框片段。

SaveDataDialog saveDataDialog = new SaveDataDialog();
saveDataDialog.show(getFragmentManager(), SaveDataDialog.class.getName());

http://developer.android.com/reference/android/app/DialogFragment.html#show(android.app.FragmentTransaction , java.lang.String)

如果您的应用程序支持 3.0.x 之前的 Android 版本。您将需要使用支持库并导入 android.app.v4.DialogFragment。

http://developer.android.com/tools/support-library/index.html

于 2013-08-29T22:59:49.630 回答