简体   繁体   English

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

[英]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.

相关问题 如何从Custom AlertDialog调用MainActivity类? - How to call a MainActivity class from Custom AlertDialog? 如何获取AlertDialog setPositiveButton从editText中提取文本并将其放置在listView中 - How to get AlertDialog setPositiveButton to pull text from editText and place in listView 单击按钮后,如何将文本从alertdialog的EditText复制并粘贴到活动的EditText中? - How do I copy and paste text from EditText of alertdialog to EditText of my activity, on button click? 将EditText中的文本控制到AlertDialog中 - Control text in EditText into AlertDialog 从 Alertdialog EditText 保存文本并显示到 Recyclerview 中并永久保存 - Save text from Alertdialog EditText and show into Recyclerview and save it forever 如何在Alertdialog Android上制作两个edittext并保留在arraylist中 - How to make two edittext on alertdialog android and keep in arraylist Android将文本EditText获取到AlertDialog - Android get text EditText to AlertDialog 通过帮助程序类在MainActivity中进行UI更改 - Make UI changes in MainActivity from helper class 从 MainActivity 在 Fragment 中编辑 EditText - Edit EditText in Fragment from MainActivity 如何显示带有edittext onTextChanged的AlertDialog - How to show AlertDialog with edittext onTextChanged
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM