找不到TextView

时间:2013-09-16 17:19:27

标签: android textview

这让我非常疯狂,我不知道发生了什么。 我在可点击的RelativeLayout中有一个带有TextView的xml布局。

<RelativeLayout
            android:id="@+id/bg_section"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginTop="10dp"
            android:background="@color/almost_black"
            android:clickable="true"
            android:onClick="goToBG"
            android:padding="10dp" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:text="Go To B.G."
                android:textColor="@color/white"
                android:textSize="20sp" />

            <ImageView
                android:id="@+id/bg_arrow"
                android:layout_width="wrap_content"
                android:layout_height="30dp"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="-10dp"
                android:src="@drawable/arrow_icon" />

            <TextView
                android:id="@+id/current_bg_count"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_toLeftOf="@id/bg_arrow"
                android:text="3"
                android:textColor="@color/holo_blue"
                android:textSize="22sp" />
        </RelativeLayout>

现在在我的代码中,我尝试更新textview“current_bg_count”

private void updateBGCount(){
    try{
        RelativeLayout bgSection = (RelativeLayout) findViewById(R.id.bg_section);
        TextView bgCountTV = (TextView) bgSection.getChildAt(2);
        bgCountTV.setText(tempBG.size());
    }
    catch(Exception e){
        e.printStackTrace();
        Logger.d(TAG, "exception in updateBGCount");
    }
}

虽然找到了RelativeLayout没有问题,但是在setText的行上给出了ResourceNotFountException。即使我尝试通过这样的id找到它:

TextView bgCountTV = (TextView) findViewById(R.id.current_bg_count)
bgCountTV.setText(tempBG.size());

它给出了同样的错误。 布局中的所有其他视图都可以轻松找到并更新。只有这一个TextView给了我这个问题。有谁知道问题是什么?

4 个答案:

答案 0 :(得分:4)

您需要在此行将size的{​​{1}}转换为ArrayList

String

由于 setText(tempBG.size()) 返回tempBG.size(),因此int正在寻找具有setText()的任何返回资源。您正在使用this setText(ResId int) method,如果您要使用id来设置文字,则会使用该{{3}}。

所以将其改为

string resource

答案 1 :(得分:2)

尝试将tempBG.size()设置为这样的字符串

bgCountTV.setText(""+tempBG.size());

这应该有效

答案 2 :(得分:0)

你正在使用eclipse吗?检查项目中是否存在错误和警告。有时在xml中有错误可以让你编译,但是无法正常工作。

答案 3 :(得分:0)

问题在于此代码

bgCountTV.setText(tempBG.size());

tempBG.size()此代码返回 int 值,它假设为字符串资源ID类似于R.string.VARIABLE_NAME因为它具有相应的int TextView假定为id的值

你能做什么

 bgCountTV.setText(tempBG.size()+"");

OR

 bgCountTV.setText(String.ValueOf(tempBG.size()));

OR

 bgCountTV.setText(tempBG.size().toString());