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);

たとえば、私はまだnull例外を受け取ります!私は以前にこれを行ったことがあると確信していますが、おそらく私は明白なことを見逃していますか?

どんなアイデアでもありがたいです。

(Eclipse、Android 1.5、Emulator with 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 に答える
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 に答える