findviewbyid возвращает null в диалоговом окне

У меня есть настраиваемый диалог, и когда я пытаюсь получить значение 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; } 

Попробуй это:

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

Вы должны указать, в какой точке зрения найти идентификатор. В противном случае он попытается найти идентификатор в представлении из макета xml, setContentView (обычно объявленного в onCreate )

В моем случае: сначала я должен позвонить

dialog.show (),

и только после этого я смог использовать

dialog.findviewById (R.id.myID).

Если я пропустил вызов show (), то я получил null обратно с findViewByID.

Я столкнулся с подобной проблемой. В моем случае у меня был диалог с пользовательским макетом, и в этом макете был 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); 

У меня была та же проблема, которая была представлена ​​в следующем fragmentе кода:

 final Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.addbank_dialog); dialog.show(); Button btnSaveBank = (Button)dialog.findViewById(R.id.btnSaveBank); final EditText etBankName = (EditText)dialog.findViewById(R.id.etBankName); btnSaveBank.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try{ String bank = etBankName.getText().toString(); SharedCommonData.dbOps.saveBankInDB(bank); } catch(Exception e){ e.printStackTrace(); } Toast.makeText(SharedCommonData.context, "Bank Saved", Toast.LENGTH_SHORT); refreshBanks(); dialog.dismiss(); } }); 

etBankName возвращало значение null, но затем я использовал dialog.findviewbyid(R.id.etBankName) и он сработал.

В моем случае у меня была эта ошибка, потому что я обновлял инициализированную переменную

В основной деятельности у меня было:

 EditText cityName; 

И в onCreate:

 EditText cityName = (EditText)findViewById(R.id.cityName); 

Просто удалил EditText и плавное плавание!

  • Не удалось выполнить компиляцию: Тип программы уже присутствует: com.google.android.gms.internal.measurement.zzabn
  • Транзитные зависимости не разрешены для aar-библиотеки с использованием gradle
  • Android View исчезает, когда выходит за пределы родителя
  • Можно ли сохранить массив JSON в SharedPreferences?
  • ANDROID: Как получить root-доступ в приложении для Android?
  • Программно получать MAC-адрес устройства Android
  • Сортировка ArrayList на основе поля объекта
  • Создать новый class из переменной в Java
  • Архивная библиотека Android (aar) против стандартной банки
  • Лучший способ parseDouble с запятой в качестве десятичного разделителя?
  • преобразовать маленький файл Endian в большой Endian
  • Interesting Posts

    Каков правильный ответ для cout << a ++ << a ;?

    Повернуть изображение вокруг символа (JAVA)

    objective @ Символ перед строк?

    Нужен ли мне отдельный раздел EFI для каждой ОС с общим диском?

    Телевизор автоматически не отображает сигнал из Windows Media Center

    Почему в инициализаторах classа можно использовать = или {}?

    Как искать и заменять строку в нескольких текстовых файлах (внутри каталога) с помощью Windows CMD? Часть 2

    При редактировании документа в Word 2007 документ внезапно становится только для чтения

    Как получить заголовок с карточек или похожих предметов с одинаковой высотой с помощью гибкой коробки?

    Как работает трансляция сетевых адресов (NAT) на домашнем маршрутизаторе?

    Как я могу программно остановить / запустить службу Windows в удаленном окне?

    Почему мой сервер Hello World выходит из раздачи ApacheBench?

    IBOutlet и IBAction

    Слияние двух файлов excel с использованием общего столбца

    Как создать индекс в Entity Framework 6.2 с первым кодом

    Давайте будем гением компьютера.