我为我的对话框创建了一个布局,并在OnCreateDialog
中填充布局/**
* Object to hold the reference to ListName EditText from Alert_Dialog
*/
private EditText mListNameEditText;
protected Dialog onCreateDialog(int id) {
switch(id) {
case DIALOG_TEXT_ENTRY:
Log.w(TAG, "In onCreateDialog");
LayoutInflater factory = LayoutInflater.from(this);
final View alertDialogView = factory.inflate(R.layout.alert_dialog, null);
mListNameEditText = (EditText) findViewById(R.id.listNameText);
.../...
.../...
.../...
在onPrepareDialog下,我试图获得我在EditText中键入的文本,这会抛出空指针异常。请帮忙解决这个问题
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
switch(id) {
case DIALOG_TEXT_ENTRY:
Log.w(TAG, "In onPrepareDialog");
mListNameEditText = (EditText) findViewById(R.id.listNameText);
if(mListNameEditText == null)
Log.w(TAG, "ListName EditText is null"); // This text is printed !!
mListNameEditText.setOnKeyListener(new OnKeyListener() { // Exception here because mListNameEditText is NULL
变化
mListNameEditText = (EditText) findViewById(R.id.listNameText);
mListNameEditText = (EditText) dialog.findViewById(R.id.listNameText);
您所拥有的行试图在主布局中找到EditText(您使用setContentView(R.layout.whatever);
设置的那个)。通过将其更改为我发布的行,您将在该对话框中搜索EditText
此外,在你的onCreateDialog你正在做同样的事情。这里还需要使用dialog.findViewById(…)