首页 > 解决方案 > 我不能为 DialogBox 中的 EditText 做 setText()

问题描述

代码就在那里,从“edtInfoName.setText(userName)”行我得到了错误,我不知道为什么。edtInfoName 在 myDialog.xml 中。请帮我找出问题所在。

itnInfo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText edtInfoName, edtInfoID, edtInfoPW;

                dialogView = (View) View.inflate(MyHome.this, R.layout.info_dialog, null);
                AlertDialog.Builder dlg = new AlertDialog.Builder(MyHome.this);
                dlg.setTitle("User Information");
                dlg.setView(dialogView);
                edtInfoName = (EditText) findViewById(R.id.edtInfoName);
                edtInfoID = (EditText) findViewById(R.id.edtInfoID);
                edtInfoPW = (EditText) findViewById(R.id.edtInfoPW);
                edtInfoName.setText(userName);
                edtInfoID.setText(userID);
                edtInfoID.getFreezesText();
                edtInfoPW.getFreezesText();
            }
        });

标签: androidandroid-studiodialog

解决方案


用这个替换你的代码

itnInfo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText edtInfoName, edtInfoID, edtInfoPW;

            dialogView = (View) View.inflate(MyHome.this, R.layout.info_dialog, null);
            AlertDialog.Builder dlg = new AlertDialog.Builder(MyHome.this);
            dlg.setTitle("User Information");
            dlg.setView(dialogView);
            edtInfoName = (EditText) dialogView.findViewById(R.id.edtInfoName);
            edtInfoID = (EditText) dialogView.findViewById(R.id.edtInfoID);
            edtInfoPW = (EditText) dialogView.findViewById(R.id.edtInfoPW);
            edtInfoName.setText(userName);
            edtInfoID.setText(userID);
            edtInfoID.getFreezesText();
            edtInfoPW.getFreezesText();
        }
    });

您正在尝试访问 info_dialog.xml 中的 edittext,因此您需要通过 dialogview 实例访问它


推荐阅读