[英]How to make text from EditText in AlertDialog available in MainActivity class?
In my project there is a MainActivity class with victory() method in it : 在我的项目中,有一个带有victory()方法的MainActivity类:
public void victory() {
name = "";
AlertDialog dialog = DialogScreen.getDialog(this, DialogScreen.IDD_MAPHIGHSCORE);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
name = DialogScreen.nickname;
Log.i("NICKNAME :", " " + name);
}
where I call getDialog(Activity activity, int ID) method from DialogScreen class : 我从DialogScreen类中调用getDialog(Activity activity,int ID)方法的地方:
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();
}
} }
But in Log.i I can see just "NICKNAME : ". 但是在Log.i中,我只能看到“ NICKNAME:”。 I also tried getters in DialogScreen class and setters in MainActivity class. 我还尝试了DialogScreen类中的getter和MainActivity类中的setter。 But this doesn't help. 但这无济于事。
So the first question is how to make text from EditText available in MainActivity class? 因此,第一个问题是如何使MainActivity类中的EditText文本可用?
And the second one is how can I know (from MainActivity class) if the button "OK" from dialog has benn pressed? 第二个是(从MainActivity类中)如何知道对话框中的“确定”按钮是否已按下?
I guess it is a timing problem Log.i is done before you click the positive button of your dialog. 我想这是一个时序问题Log.i在您单击对话框的肯定按钮之前就完成了。 Add a DismissListener to your dialog within the MainActivity and move Log.i into that listener. 在MainActivity中的对话框中添加DismissListener ,然后将Log.i移到该侦听器中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.