Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java findViewWithTag在循环内使用时提供空对象引用_Java_Android - Fatal编程技术网

Java findViewWithTag在循环内使用时提供空对象引用

Java findViewWithTag在循环内使用时提供空对象引用,java,android,Java,Android,在安卓应用程序中,我有4个按钮,我分别给了它们标记1、2、3和4,如果每个按钮与代码中的某个值“i”匹配(或不匹配),我想使用for循环来更改每个按钮中的文本在for循环中,从1到4,我当然会将其转换为字符串。但是当我运行代码时,它会给我null对象引用,应用程序崩溃 应用程序调用ans.setText()时出错;或任何其他方法。。 **我确实尝试启动一个对象,并通过它在循环外的标记找到它,它工作起来没有问题 for(int i=1;i<=4;i++){ Button

在安卓应用程序中,我有4个按钮,我分别给了它们标记1、2、3和4,如果每个按钮与代码中的某个值“i”匹配(或不匹配),我想使用for循环来更改每个按钮中的文本在for循环中,从1到4,我当然会将其转换为字符串。但是当我运行代码时,它会给我null对象引用,应用程序崩溃 应用程序调用ans.setText()时出错;或任何其他方法。。 **我确实尝试启动一个对象,并通过它在循环外的标记找到它,它工作起来没有问题

for(int i=1;i<=4;i++){
           Button ans=(Button) view.findViewWithTag(String.valueOf(i));
            if(i==correct()){
                ans.setText(x+y+"");
            }else{
                int z=rand.nextInt(100)+rand.nextInt(100);
                if(z==x+y){
                    ans.setText(z+rand.nextInt(100));
                }
                else{
                    ans.setText(z);
                }
            }
        }

绑定布局并使用childCount而不是标记解析视图

假设它是您拥有的线性布局(但您可以相应地进行调整):

LinearLayout布局=(LinearLayout)findViewById(您的布局的R.id.name);
对于(int i=0;i

注意:在循环中,将i定义为整数,然后检查
i==correct()
。您的correct()方法是否返回一个应该等于i的整数?可能您在这里没有共享的代码中有更多问题。

绑定布局并使用childCount而不是标记解析视图

假设它是您拥有的线性布局(但您可以相应地进行调整):

LinearLayout布局=(LinearLayout)findViewById(您的布局的R.id.name);
对于(int i=0;i


注意:在循环中,将i定义为整数,然后检查
i==correct()
。您的correct()方法是否返回一个应该等于i的整数?可能您在这里没有共享的代码上有更多问题。

您正在调用的“findViewWithTag()”是什么?它有那些按钮作为它的子对象吗?啊哈…我完全是一个初学者,我不知道你说的“它有那些按钮作为它的子对象”是什么意思。我也不知道我实际上调用的是什么视图。我只做了onClick方法并给它参数(视图)我不明白为什么这个参数实际上是用于谷歌搜索,它没有多大帮助
按钮
s不是被点击的
视图
的子项,因此你从find调用中得到空值。你能发布你的布局XML文件吗?在Android中,每个UI元素都有一个唯一的id(在布局XML中设置)。您可以尝试调用
findViewById(R.id.your_button_id)
而不是
findViewWithTag
为每个
view
的按钮调用“findViewWithTag()”on?它有那些按钮作为它的子对象吗?啊哈…我完全是一个初学者,我不知道你说的“它有那些按钮作为它的子对象”是什么意思。我也不知道我实际上调用的是什么视图。我只做了onClick方法并给它参数(视图)我不明白为什么这个参数实际上是用于谷歌搜索,它没有多大帮助
按钮
s不是被点击的
视图
的子项,因此你从find调用中得到空值。你能发布你的布局XML文件吗?在Android中,每个UI元素都有一个唯一的id(在布局XML中设置)。您可以尝试调用
findViewById(R.id.your_button_id)
而不是
findViewWithTag
每个按钮我的布局中还有几个按钮和视图,使用childCount迭代是否也会影响它们?是的,方法correct返回一个整数,检查它是否等于i。,返回的值总是在1和4之间(包括1和4),它会受到影响,是的。除非前面提到的4个按钮彼此紧挨着,并且可以在你现在拥有的按钮中以嵌套布局进行分组,否则我想我可以将我想要的按钮放在网格布局中,并对其进行迭代..谢谢男士:)很高兴我能帮上忙!不过,我的布局中还有一些按钮和视图,使用childCount迭代是否也会影响它们?是的,方法correct返回一个整数,检查它是否等于i。,返回的值总是在1和4之间(包括1和4),它会受到影响,是的。除非前面提到的4个按钮彼此紧挨着,并且可以在你现在拥有的按钮中以嵌套布局进行分组,否则我想我可以将我想要的按钮放在网格布局中,并对其进行迭代..谢谢男士:)很高兴我能帮上忙!
 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setText(java.lang.CharSequence)' on a null object reference
        at com.example.braintrainer.MainActivity.go(MainActivity.java:52)
    LinearLayout layout = (LinearLayout) findViewById(R.id.name_of_your_layout);
    for (int i = 0; i < layout.getChildCount(); i++) {
            View v = layout.getChildAt(i);
            //add your checks here and set the text using v.setText("...");  
        }