我已经从findViewbyID获得null返回几个小时了。我已经完成了所有的解决方案,检查我的xml等。我发现如果我尝试连续拉出两个视图,第二个具有第一个的预期结果。所以我通过在R.id.xxx值中添加1来修复我的应用程序......发生了什么?
product_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/product_name" xmlns:android="http://schemas.android.com/apk/res/android"
style="@android:style/TextAppearance.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView android:id="@+id/cart_icon"
android:layout_width="wrap_content"
android:paddingLeft="4dip"
android:paddingRight="4dip"
android:layout_alignParentRight="true"
android:layout_marginLeft="10px"
android:layout_height="wrap_content"
android:src="@drawable/ic_menu_shopping"/>
</RelativeLayout>
这是我的CursorAdapter类的newView方法不起作用。 productName为null,并为图标分配TextView对象。它们仅在此处创建用于调试,使findViewbyId尽可能接近视图创建。
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view=mInflater.inflate(R.layout.product_row,parent,false);
View productName=(View)view.findViewById(R.id.product_name);
View icon = (View) view.findViewById(R.id.cart_icon);
return view;
以下添加+ 1的代码实际上有效。为什么?!?!
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view=mInflater.inflate(R.layout.product_row,parent,false);
View productName=(View)view.findViewById(R.id.product_name+1);
View icon = (View) view.findViewById(R.id.cart_icon+1);
return view;
}
答案 0 :(得分:2)
过去我遇到的问题是生成的R.java文件未正确更新 - 在一种情况下资源ID混淆了,我的所有文本标签都混淆了..
项目清理总是为我确定。