Android 在多个类中使用单个对话框代码

Android 在多个类中使用单个对话框代码,android,dialog,Android,Dialog,我有一个alertdialog,我知道我将在多个类中使用它,考虑到我的应用程序,你可以告诉我,我宁愿将它放在自己的类中,并在必要时调用它。这是一个简单的文本字段和确定/取消按钮。我总是想向其中传递一些文本,在用户单击OK之后,我想用更新的文本字符串更新一个变量 转换此代码以便在其他地方使用的最佳方法是什么 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); fi

我有一个alertdialog,我知道我将在多个类中使用它,考虑到我的应用程序,你可以告诉我,我宁愿将它放在自己的类中,并在必要时调用它。这是一个简单的文本字段和确定/取消按钮。我总是想向其中传递一些文本,在用户单击OK之后,我想用更新的文本字符串更新一个变量

转换此代码以便在其他地方使用的最佳方法是什么

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View layout = inflater.inflate(R.layout.dialog_layout, null);

editTextfield = (EditText) layout.findViewById(R.id.comment_text);
editTextfield.setText(text);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
builder.setTitle(R.string.title);

builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {

        text = editTextfield.getText().toString();

            removeDialog(DIALOG);

});
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {

           removeDialog(DIALOG);

    }
});

AlertDialog dialog = builder.create();
return dialog;

谢谢你抽出时间

我就是这么做的。创建了一个
ConfirmDialog
类,该类在其构造函数中创建AlertDialog.Builder,并在其自己的
show
方法中委托
show
调用。只需传递一个
parent
参数(调用活动),并使用它来收集所有资源

在该类上有一个字符串变量,并有一个getter来获取它

然后,您可以(通过任何活动)执行以下操作:

当你需要文本的时候

myDialog.getText();
编辑:更多详细信息

public class ConfirmDialog {
    private final Context parent;
    private final AlertDialog dialog;    
    private String text;

    public ConfirmDialog(Context parent) {
        this.parent = parent;

        final EditText editTextfield = (EditText) layout.findViewById(R.id.comment_text);
        editTextfield.setText(text);

        this.dialog = new AlertDialog.Builder(parent)
                       .setView(LayoutInflater.from(parent).inflate(R.layout.dialog_layout, null));
                       .setTitle(R.string.title); // you can also pass the title if you want a different one each time you instanciate the dialog
                       .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int id) {
                              setText(editTextfield.getText().toString());
                              removeDialog(DIALOG);
                           }
                        });
                       .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int id) {
                              removeDialog(DIALOG);
                           }
                        })
                       .create();
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }

    public void show() {
        dialog.show();
    }
}

(我在StackOverflow编辑器中快速编码,因此可能会有语法错误)

我就是这么做的。创建了一个
ConfirmDialog
类,该类在其构造函数中创建AlertDialog.Builder,并在其自己的
show
方法中委托
show
调用。只需传递一个
parent
参数(调用活动),并使用它来收集所有资源

在该类上有一个字符串变量,并有一个getter来获取它

然后,您可以(通过任何活动)执行以下操作:

当你需要文本的时候

myDialog.getText();
编辑:更多详细信息

public class ConfirmDialog {
    private final Context parent;
    private final AlertDialog dialog;    
    private String text;

    public ConfirmDialog(Context parent) {
        this.parent = parent;

        final EditText editTextfield = (EditText) layout.findViewById(R.id.comment_text);
        editTextfield.setText(text);

        this.dialog = new AlertDialog.Builder(parent)
                       .setView(LayoutInflater.from(parent).inflate(R.layout.dialog_layout, null));
                       .setTitle(R.string.title); // you can also pass the title if you want a different one each time you instanciate the dialog
                       .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int id) {
                              setText(editTextfield.getText().toString());
                              removeDialog(DIALOG);
                           }
                        });
                       .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int id) {
                              removeDialog(DIALOG);
                           }
                        })
                       .create();
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }

    public void show() {
        dialog.show();
    }
}

(我在StackOverflow编辑器中快速编码,因此可能存在语法错误)

阅读此问题的答案”


尽管要求不同,但解决方案可用于您的问题

阅读此问题的答案”


尽管要求不同,但解决方案可以用于您的问题

您应该查看本教程,它将准确地向您展示如何做您正试图做的事情。您必须扩展Dialog类


您应该查看本教程,它准确地向您展示了如何做您想做的事情。您必须扩展Dialog类


请详细说明一下。有点困惑。以前没上过这样的课。谢谢你用我的意思的一个快速实现来回答我。根据您的需要进行定制。{removeDialog(DIALOG);}行是否有错误,因为您没有为此传递任何消息,或者我再次感到困惑。谢谢,我不知道,我以为这是你的自定义方法-你可以使用dialog.dismise();代码包装在带有开关的CreateDialog方法中。在本例中,对话框在代码顶部表示为int.1。我就是这样使用它的,因为这是我在一个类中学习的方法。你能详细介绍一下吗。有点困惑。以前没上过这样的课。谢谢你用我的意思的一个快速实现来回答我。根据您的需要进行定制。{removeDialog(DIALOG);}行是否有错误,因为您没有为此传递任何消息,或者我再次感到困惑。谢谢,我不知道,我以为这是你的自定义方法-你可以使用dialog.dismise();代码包装在带有开关的CreateDialog方法中。在本例中,对话框在代码顶部表示为int.1。我就是这样用的,因为这就是我在课堂上学习的方法。