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