1

这让我非常疯狂,我不确定发生了什么。我在可点击的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>

现在在我的代码中,我尝试更新文本视图“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");
    }
}

这在我 setText 的行上给出了 ResourceNotFountException,尽管发现 RelativeLayout 没有问题。即使我尝试像这样通过 id 找到它:

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

它给出了同样的错误。布局中的所有其他视图都很容易找到并且更新得很好。只有这个 TextView 给了我这个问题。有谁知道问题是什么?

4

4 回答 4

4

您需要在此行将您size的 of转换ArrayList为 aString

 setText(tempBG.size())

由于tempBG.size()返回 an intthensetText()正在寻找具有id返回的任何资源的资源。你正在使用这个 setText(ResId int) 方法,如果你有一个string resource你想用来设置文本的方法。

所以改成

setText(String.valueOf(tempBG.size()));
于 2013-09-16T17:27:56.193 回答
2

尝试tempBG.size()像这样设置你的字符串

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

这应该工作

于 2013-09-16T17:30:06.857 回答
0

你在用日食吗?检查您的项目中没有错误和警告。有时 xml 中有错误可以让您编译,但无法正常工作。

于 2013-09-16T17:33:24.333 回答
0

问题出在这段代码上

bgCountTV.setText(tempBG.size());

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

你可以做什么

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

或者

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

或者

 bgCountTV.setText(tempBG.size().toString());
于 2013-09-16T17:53:41.177 回答