如何使来自 AlertDialog 中的 EditText 的文本在 MainActivity class 中可用?
How to make text from EditText in AlertDialog available in MainActivity class?
在我的项目中有一个带有 victory() 方法的 MainActivity class :
public void victory() {
name = "";
AlertDialog dialog = DialogScreen.getDialog(this, DialogScreen.IDD_MAPHIGHSCORE);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
name = DialogScreen.nickname;
Log.i("NICKNAME :", " " + name);
}
我从 DialogScreen 调用 getDialog(Activity activity, int ID) 方法的地方 class :
public class DialogScreen {
static String nickname = "DEF";
public static final int IDD_MAPHIGHSCORE = 1;
public static final int IDD_WORLDHIGHSCORE = 2;
public static AlertDialog getDialog(Activity activity, int ID) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
final EditText editText = new EditText(activity);
int maxLength = 15;
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
switch(ID) {
case IDD_MAPHIGHSCORE: {
builder.setTitle(R.string.newHighScore);
builder.setMessage(R.string.enterNickName);
builder.setCancelable(true);
builder.setView(editText).create();
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String text = editText.getText().toString();
nickname = text;
dialog.dismiss();
}
});
}
}
return builder.create();
}
}
但在 Log.i 中我只能看到 "NICKNAME : "。我还尝试了 DialogScreen class 中的 getter 和 MainActivity class 中的 setter。但这于事无补。
所以第一个问题是如何使 EditText 中的文本在 MainActivity class 中可用?
第二个是我怎么知道(从 MainActivity class)是否按下了对话框中的按钮 "OK"?
估计是时间问题
Log.i 在您单击对话框的肯定按钮之前完成。
在 MainActivity 中的对话框中添加 DismissListener 并将 Log.i 移至该侦听器中。
在我的项目中有一个带有 victory() 方法的 MainActivity class :
public void victory() {
name = "";
AlertDialog dialog = DialogScreen.getDialog(this, DialogScreen.IDD_MAPHIGHSCORE);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
name = DialogScreen.nickname;
Log.i("NICKNAME :", " " + name);
}
我从 DialogScreen 调用 getDialog(Activity activity, int ID) 方法的地方 class :
public class DialogScreen {
static String nickname = "DEF";
public static final int IDD_MAPHIGHSCORE = 1;
public static final int IDD_WORLDHIGHSCORE = 2;
public static AlertDialog getDialog(Activity activity, int ID) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
final EditText editText = new EditText(activity);
int maxLength = 15;
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
switch(ID) {
case IDD_MAPHIGHSCORE: {
builder.setTitle(R.string.newHighScore);
builder.setMessage(R.string.enterNickName);
builder.setCancelable(true);
builder.setView(editText).create();
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String text = editText.getText().toString();
nickname = text;
dialog.dismiss();
}
});
}
}
return builder.create();
}
}
但在 Log.i 中我只能看到 "NICKNAME : "。我还尝试了 DialogScreen class 中的 getter 和 MainActivity class 中的 setter。但这于事无补。
所以第一个问题是如何使 EditText 中的文本在 MainActivity class 中可用?
第二个是我怎么知道(从 MainActivity class)是否按下了对话框中的按钮 "OK"?
估计是时间问题 Log.i 在您单击对话框的肯定按钮之前完成。 在 MainActivity 中的对话框中添加 DismissListener 并将 Log.i 移至该侦听器中。