0

这应该很简单,但让我发疯。

我的布局中有以下内容,没有问题。

<TextView
    android:id="@+id/birdinfo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#00009c"
    android:text="The Robin is a popular bird"
/>

然后我有这些数组,这些数组是用我拥有的字符串资源列表设置的

 private Integer[] DetailIds = {            
         R.string.barnaclegoose,
         R.string.barnowl,
         R.string.bewicksswan,
         R.string.blackbird,
         R.string.blackcap_male};

所以我只是想这样做!

    TextView detail = (TextView)findViewById(R.id.birdinfo);
    detail.setText(DetailIds[0]);
    setContentView(R.layout.main);

但这会导致强制关闭错误。

字符串资源看起来像这样(当然没有页眉和页脚信息

<string name="barnaclegoose">What a wonderful goose!</string>

添加到这个问题是如果我直接使用资源到资源

detail.setText(R.string.barnaclegoose);

例如,我仍然得到一个空异常!我确定我以前做过,但也许我错过了明显的???

任何想法表示赞赏。

(Eclipse,Android 1.5,模拟器 1.5)

4

3 回答 3

1

我意识到这已经很老了,但它是在搜索中出现的......无论如何,你需要先打电话setContentView()等等findViewById()

setContentView(R.layout.main);
TextView detail = (TextView)findViewById(R.id.birdinfo);
detail.setText(DetailIds[0]);
于 2011-06-20T17:28:49.777 回答
1

你的问题首先是这一行setContentView(R.layout.main); ,你必须先定义这一行,然后 setText 你的 textView

于 2019-01-05T07:20:25.443 回答
0

感谢你的回答。但是如果你的意思是 R.string.barnaclegoose 例如,这是一个指向资源中字符串本身的 ID 的整数值。

无论如何,我终于通过创建内联视图而不是使用资源视图来实现它。

例如

TextView t= new TextView(ctx);
     t.setId(2);
     t.setTextColor(Color.BLACK);
     t.setText(DetailIds[bird]);

    mLinearLayout.addView(t,params);
    mLinearLayout.setBackgroundColor(Color.WHITE);
    setContentView(mLinearLayout);

这非常有效。

于 2010-07-01T10:42:06.907 回答