Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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/3/android/218.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 ImageButton.setId=空指针异常_Java_Android_Nullpointerexception_Imagebutton - Fatal编程技术网

Java ImageButton.setId=空指针异常

Java ImageButton.setId=空指针异常,java,android,nullpointerexception,imagebutton,Java,Android,Nullpointerexception,Imagebutton,我正在创建一个imageButton,我要将ID设置为imageButton。但我得到的是nullpointerexception错误。。谁能告诉我我做错了什么?非常感谢:)我已经声明public int count=0 public int count=0; final ImageButton button =(ImageButton)convertView.findViewById(R.id.favoritelist_button); button.setId(co

我正在创建一个imageButton,我要将ID设置为imageButton。但我得到的是nullpointerexception错误。。谁能告诉我我做错了什么?非常感谢:)我已经声明public int count=0

public int count=0;

final ImageButton button =(ImageButton)convertView.findViewById(R.id.favoritelist_button);
            button.setId(count); //null pointer exception
            count++;

            button.setImageResource(R.drawable.phone);

            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // Do something in response to button click
                    if(!tFave){
                        button.setImageResource(R.drawable.phone);
                        tFave = true;
                    }
                    else{
                        button.setImageResource(R.drawable.gmail);
                        tFave = false;
                    }
                }
            });

由于您处理的是
convertview
,我猜这段代码来自
ListView
适配器的
getView

由于适配器重复使用视图,因此您所做的任何更改(如更改视图ID)都将在下次使用视图时进行

在本例中,您使用
setID
更改了按钮的ID。这可能是第一次起作用,但下一次,您再也找不到该按钮了-对
findViewById
的调用返回null,因为ID
favoritelist\u按钮已被删除并替换为您分配的ID(以计数)


只需删除对
setID
的调用。如果您需要它,发布您认为需要它的原因,人们会帮助您找到不同的解决方案。

按钮可能为空。发布还有图像按钮的xml我猜是convertView.findViewById(R.id.favoritelist_按钮);确实为您提供了Null所以,您正在尝试将id重新分配给已经有id的项目。。。我想R会对它非常生气的!!你看,setId()应该用于你在运行时创建的那些对象,在那些确实需要它的场合。如果你想在不同的按钮中存储一些id,我建议你使用
setTag()
getTag()
。我的应用程序是列出你喜欢的韩语单词。可扩展的列表如下:AAAAA-动词-eat(星形按钮)BBBBB-动词-sleep(星形按钮)如果用户不想再保留最喜欢的单词,可以按下星形按钮。因此,我必须为星形按钮分配ID,以便我知道哪个按钮不受欢迎,并且我可以从数据库中删除该单词。您可以使用另一种方法来执行此操作,例如,其他人建议使用
setTag
getTag
来存储该信息。不要更改ID。