java - 警报对话空对象引用

标签 java android android-studio nullreferenceexception

当用户想要创建游戏时,我有一个警报对话框弹出窗口,它询问用户他们想在游戏中赌博多少分,但它不断抛出空引用错误,我不太清楚为什么。

这是我的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);
                            }

                        }
                    });

尝试设置文本时会抛出错误。这是它抛出的错误

Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

我知道我过去有这个工作,但我必须改变一些东西以使其不再正常工作,但我不知道我会改变什么。

我知道这是一个非常常见且简单的问题,但我查看了许多其他答案,但没有找到适合我的解决方案。

有什么帮助吗?

<小时/>

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);

最佳答案

您的 wagerRV 为空,因为它找不到 R.id.wagerRV

您需要使用对话框引用从 onClick() 中检索 View 。

改变

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

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

删除任何不必要的转换(我目前没有 IDE)。

根据评论和问题编辑更新:-

alertDialog.setView(edittext) --> 您的 alertDialog 没有任何 ID 为 R.id.wagerRV 的 TextView。请在线查看一些有关使用 XML 设置内容 View 的示例,并且 XML 应该具有该 TextView。如果您的 wagerRV 位于 Activity 中而不是对话框内,则在 Activity 级别声明它,而不是在alertDialog 的 onClick 内。

更新2

您需要使用AlertDialogalertDialog =alertDialogBu​​ilder.create();将构建器更改为实际的AlertDialog。然后选角也会起作用。

关于java - 警报对话空对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53146775/

相关文章:

android - 无法在设备或模拟器上运行 cordova 应用程序错误运行

java - Google App Engine Java 应用找不到 javac?

java - 在页面上处理 Java 表达式语言

java - Android上图片文件的加密--Cipher(Output|Input)Stream问题

android - 重命名项目文件夹后,我无法在模拟器中运行我的应用程序

svn - 无法在 Android Studio gradle 中导入 org.tmatesoft

android - 我应该在哪里为新的 Android Studio 项目中的 firebase 添加项目级依赖项

java - 强制 JVM 在终止前完成代码块

java - 突出显示用于 JTable 过滤的表单元格中的子字符串

android - 输入字段 1px 边框有时在顶部消失,有时在 android 设备的底部消失