繁体   English   中英

如何使MainActivity类中的AlertDialog中的EditText中的文本可用?

[英]How to make text from EditText in AlertDialog available in MainActivity class?

在我的项目中,有一个带有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);
    }

我从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();
}

}

但是在Log.i中,我只能看到“ NICKNAME:”。 我还尝试了DialogScreen类中的getter和MainActivity类中的setter。 但这无济于事。

因此,第一个问题是如何使MainActivity类中的EditText文本可用?

第二个是(从MainActivity类中)如何知道对话框中的“确定”按钮是否已按下?

我想这是一个时序问题Log.i在您单击对话框的肯定按钮之前就完成了。 在MainActivity中的对话框中添加DismissListener ,然后将Log.i移到该侦听器中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM