安卓应用中报错:No package identifier when getting value for resource num 0x00000000
- TextView quantityView = (TextView)convertView.findViewById(R.id.uploadinfo_list_item_uploadtotal);
- System.out.println("quantityView: "+quantityView);
- quantityView.setText(mq.getQuantity()); //该行报错
TextView quantityView = (TextView)convertView.findViewById(R.id.uploadinfo_list_item_uploadtotal);
System.out.println("quantityView: "+quantityView);
quantityView.setText(mq.getQuantity()); //该行报错
报错的地方为: quantityView.setText(mq.getQuantity()) 这一句,注意,没有报NullPointer,quantityView这个变量本身没问题。那问题就出在 mq.getQuantity() 这里。
那就奇怪了,不就是设置一下TextView的文本内容吗?和引用资源有啥关系?
谜底解开,这里就是安卓平台的特色之一了:资源引用。
setText方法有多个实现,例如:
setText( CharSequence text ),文本
setText( int id ),数字,也就是id
好了,就是这第二种情况,mq.getQuantity()返回的是一个数量,是整数,所以setText()方法就理解为把这个整数当成一个id去引用它所对应的字符串资源,所以当然是找不到的。
到了这里,解决方法也就呼之欲出了,就是把mq.getQuantity()转换成字符串即可。
- quantityView.setText(String.valueOf(mq.getQuantity()));
quantityView.setText(String.valueOf(mq.getQuantity()));
问题解决!用整数id引用字符串资源,安卓特色之一,要记住。