findViewbyID从预期返回1个视图

时间:2011-10-18 03:21:36

标签: android

我已经从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;
    }

1 个答案:

答案 0 :(得分:2)

过去我遇到的问题是生成的R.java文件未正确更新 - 在一种情况下资源ID混淆了,我的所有文本标签都混淆了..

项目清理总是为我确定。