Я пытаюсь получить значение EditText в диалоговом окне. A строка «*» 'ed в следующем коде, safeNameEditText имеет значение NULL; я предполагаю, потому что «findVeiwById» выполняет поиск в контексте «AlertDialog.OnClickListener»; Как я могу получить/изменить контекст этого вызова «findViewById»?Изменение контекста Android для findViewById для супер из встроенного класса
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
switch(id){
case DIALOG_NEW_SAFE:
builder.setTitle(R.string.news_safe);
builder.setIcon(android.R.drawable.ic_menu_add);
LayoutInflater factory = LayoutInflater.from(this);
View newSafeView = factory.inflate(R.layout.newsafe, null);
builder.setView(newSafeView);
builder.setPositiveButton(R.string.ok, new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
* EditText safeNameEditText = (EditText) findViewById(R.id.new_safe_name);
String safeName = safeNameEditText.getText().toString();
Log.i(LOG, safeName);
setSafeDao(safeName);
}
});
builder.setNegativeButton(R.string.cancel, new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return(builder.create());
default:
return(null);
}
}
спасибо, я думал, что на самом деле может получить EditText, но safeNameEditText по-прежнему является нулевым. нет подсказки почему ... мне нужно сделать что-то особенное, чтобы найти представление, если оно является частью диалога? – wuntee
findViewById использует представление, которое в настоящее время установлено для Activity. Если идентификатор отсутствует в этом представлении, он возвращает null. – Prashast