シリアライズの副作用
動作確認をしていたらなにやら文字がおかしなことになっている。これまではきちんと文字が表示されていたのに数字が表示されている。ところが同じデータでも別のページでは正しく表示されている。なにが起きたのか?
結論としては先のシリアライズ化の副作用だったらしい。当該オブジェクトの文字列がそうなっていたらしい。たしかにそれは当然のことなのかとようやく事態を理解する。それまでは問題なく文字を表示してくれていたコードでは駄目なのだけれど、よい(ように見える)部分もあったがゆえに少し悩んだのだった。
ようはそう見えていただけで実は別の方法で表示させていたと、確認してみて分かったのだった。
問題となったのは string.xml に定義していた文字列で、これを指定するために、
String str = String.valueOf(R.string.hoge);という感じに書いていたところが、シリアライズしているためにただの数字文字列になってしまうのだった。一方で、たとえばアクションバーのタイトルをセットするとかだと、
actionBar.setTitle(R.string.hoge);でも問題なく文字列として表示してくれる。
そんなこんなで Assets のファイルへアクセスしようとしても数字だらけのファイル名になってしまっているので、そんなファイルは見つからないとか言われてしまう始末。
ひとまずは、
Context.getResources().getString(R.string.hoge);とすることで対処はできているのだけれど、もう少しスマートな方法とかあるかもしれない。はまってしまったおかげで予定がまったく進行せずに、かえって逆戻りするはめに。
| 固定リンク
コメント