Ссылка на пустой объект Alert Dialogue - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть всплывающее окно alertDialogue, когда пользователь хочет создать игру, и он запрашивает у пользователя, сколько очков он хотел бы сыграть в игре, но он продолжает выдавать нулевую ссылку, и я не совсем уверен, почему.

Это мой сигнал оповещения о положительном нажатии кнопки диалога

 alertDialog.setPositiveButton("Confirm Wager", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int whichButton) {
                            createLobbyGame();
                            double wagerD;
                            String wager;
                            TextView wagerRV = findViewById(R.id.wagerRV);

                            wagerD = Double.parseDouble(edittext.getText().toString());
                            wager = Double.toString(wagerD);
                            boolean wage = wager.endsWith("0");

                            if(wage) {
                                wagerRV.setText(wager+"0");
                            } else {
                                wagerRV.setText(wager);
                            }

                        }
                    });

Выдает ошибку при попытке установить текст. Это ошибка, которую он выбрасывает

Попытка вызвать виртуальный метод 'void android.widget.TextView.setText (java.lang.CharSequence)' для ссылки на пустой объект

Я знаю, что у меня это работало в прошлом, но я, должно быть, изменил что-то, чтобы оно больше не работало должным образом, но я понятия не имею, что бы я изменил.

Я знаю, что это очень распространенная и простая проблема, но я посмотрел на многие другие ответы и не нашел решения, которое работает для меня.

Любая помощь?


Объявление TextView:

TextView wagerRV = (TextView) ((AlertDialog.Builder) alertDialog).findViewById(R.id.wagerRV);

Как я определяю alertDialog:

final AlertDialog.Builder alertDialog = new AlertDialog.Builder(FlipCoinLobby.this);
final EditText edittext = new EditText(FlipCoinLobby.this);

alertDialog.setView(edittext);

1 Ответ

0 голосов
/ 05 ноября 2018

Ваш wagerRV является нулевым, потому что не может найти R.id.wagerRV.

Вам необходимо получить виды изнутри onClick(), используя ссылку на диалоговое окно.

Изменение

TextView wagerRV = findViewById(R.id.wagerRV);

до

TextView wagerRV = (TextView) ((AlertDialog) alertDialog).findViewById(R.id.wagerRV);

Удалите все ненужные кастинги (на данный момент у меня нет IDE).

Обновление на основе комментариев и редактирования вопроса: -

alertDialog.setView(edittext) -> ваш alertDialog не имеет никакого TextView с идентификатором R.id.wagerRV. Пожалуйста, ознакомьтесь с некоторыми примерами онлайн по настройке представления содержимого с помощью XML, и этот XML должен иметь это TextView. Если ваш wagerRV находится в активности, а не в диалоге, объявите его на уровне активности, а не внутри onClick alertDialog.

Обновление 2

Вам нужно изменить ваш компоновщик на фактический AlertDialog, используя AlertDialog alertDialog = alertDialogBuilder.create();. И тогда кастинг тоже будет работать.

...