我有一个自定义对话框,当我尝试获取EditText的值时,它返回null.
该行返回null
EditText et = (EditText)findViewById(R.id.username_edit);
Run Code Online (Sandbox Code Playgroud)
这是完整的代码.
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;
}
Run Code Online (Sandbox Code Playgroud)
cch*_*son 39
试试这个:
EditText et = (EditText)textEntryView.findViewById(R.id.username_edit);
Run Code Online (Sandbox Code Playgroud)
你必须告诉在哪个视图中找到id.否则它将尝试在xml布局中查找由setContentView(通常声明为onCreate)的视图中的id
Kar*_*oly 33
在我的情况下:首先我必须打电话给
dialog.show()
只有在我能够使用之后
dialog.findviewById(R.id.myID).
如果我错过了调用show(),那么我会使用findViewByID获得null.
我遇到了类似的问题.在我的例子中,我有一个自定义布局的对话框,在这个布局中有一个radioButton.为了解决这个问题,我使用了以下代码:
View dialogLayout = factory.inflate(R.layout.dialog_layout, null);
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setView(dialogLayout);
RadioButton radiobt = (RadioButton) dialogLayout.findViewById(R.id.radioBt);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25536 次 |
| 最近记录: |