2012年3月16日金曜日

string.xmlからsettextする際の失敗例

今回マルチランゲージを行った際の不具合を紹介します。

Signal Puzzleではゲーム中に、時間・タッチ回数などを更新時、データベースをリスト表示する時にテキストをセットしています。

この時にstring.xmlのリソースを取得してセットしていたんですが、単体では使えたけど、複数の文字列を扱う場合、使えませんでした。以下内容になります。

---------------------初期----------------------
TextView text1

*******省略*******

text1.setText("こんにちは");
---------------------変更1---------------------
text1.setText(R.string.xxx);
---------------------変更2---------------------
text1.setText("おはようございます"+R.string.xxx);
-----------------------------------------------

上記のように変更してみました。そうした場合変更2は失敗しました。

【表示時】
---初期-----
こんにちは
---変更1----
こんにちは
---変更2----
おはようございますxxxxxxxxxxx(R.string.xxxのリソースid)
------------

下記のように修正しました。

--------------------- 変更3 ----------------------
TextView text1
String viewtext1

*******省略*******

viewtext1 = getString(R.string.xxx);
text1.setText("おはようございます"+viewtext1);
-------------------------------------------------

【表示時】
---変更3----
おはようございますこんにちは
------------

【結論】
複数の文字列をセットする場合は、一度単体でStringデータを取得して、セットしてあげるのが良いようです。
単体で使う場合でも取得してからの方が良いかもしれませんね!

これ位常識なのかな・・・?

以上になります。

0 件のコメント:

コメントを投稿