一尘不染

Java findviewbyid在对话框中返回null

java

我有一个自定义对话框,当我尝试获取EditText的值时,它返回null。

该行返回null

EditText et = (EditText)findViewById(R.id.username_edit);

这是完整的代码。

protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DIALOG_TEXT_ENTRY:
        LayoutInflater factory = LayoutInflater.from(this);
        final View textEntryView = factory.inflate(R.layout.alert_dialog_text_entry, null);
        return new AlertDialog.Builder(TicTacToe.this)
            //.setIconAttribute(android.R.attr.alertDialogIcon)
            .setTitle(getTitleText())
            .setView(textEntryView)
            .setPositiveButton("JOIN GAME", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    try
                    {
                        EditText et = (EditText)findViewById(R.id.username_edit);
                            playerName = et.getText().toString();
                    }
                    catch (Exception e)
                    {
                    }
                }
            })
            .create();
    }
    return null;
}

阅读 303

收藏
2020-03-20

共1个答案

一尘不染

尝试这个:

EditText et = (EditText)textEntryView.findViewById(R.id.username_edit);

你必须告诉在哪个视图中找到ID。否则,它将尝试通过xml布局setContentView(通常在中声明onCreate)夸大视图中的ID。

2020-03-20