Android在活动中显示对话框

时间:2013-08-29 22:16:08

标签: java android dialog

我创建了一个扩展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();
    }

}

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

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

第二行给出空指针异常。

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

4 个答案:

答案 0 :(得分:1)

尝试

sdd.show();

而不是

sdd.getDialog().show();

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

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

答案 1 :(得分:1)

SaveDataDialog DialogFragment延长sdd.show(),您可以致电DialogFragment以显示{{1}}。

答案 2 :(得分: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

答案 3 :(得分:0)

这个链接对我很有帮助,希望它对你有所帮助。 这是a link