すいません、VB4しかやってないんです、VBAはやったけど(ぼそ) チラシの裏だって立派な書き込み空間なんだからねっ!資源の有効活用なんだからねっ!とか偉そうに言ってるけど、実は色々と書き残したいだけ

だからなに? どうしろと? くるみサイズの脳みそしかないあやしいジャンガリアンベムスターがさすらう贖罪蹂躙(ゴシックペナルティ)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  632  : 記事  35  : コメント  11671  : トラックバック  143

ニュース


片桐 継 は
こんなやつ

かたぎり つぐ ってよむの

大阪生まれ河内育ちなんだけど
関東に住みついちゃったの
和装着付師だったりするの
エセモノカキやってたりするの
VBが得意だったりするの
SQL文が大好きだったりするの
囲碁修行中だったりするの
ボトゲ好きだったりするの
F#かわいいよF#

正体は会った人だけ知ってるの

空気読まなくてごめんなさいなの


わんくまリンク

C#, VB.NET 掲示板
C# VB.NET掲示板

わんくま同盟
わんくま同盟Blog


WindowsでGo言語
WindowsでGo言語


ネット活動


SNSは疲れました

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

イベント活動

プログラムの活動

作り始めて、意外と楽しくてメモが増えてるw

Androidアプリケーションを作るためのプロジェクトをEclipseで新規作成すると、一杯フォルダができる。

そして、このフォルダたち、それぞれ役割があって、きっと、それらの中でも良くお世話になるのが、resource関連だと思うの。

たとえば、サイコロアプリをつくりたいなーとか考えた時、画面やボタン、メッセージなんかは日本語かもしれないし、他の国の人が使えば、他の国の言葉の表示も必要になる。

そんな時、このリソースファイルに定義をまとめて作っておくことで、色々と作業が楽になるんだなってことが判ってきた。

たとえば、/res/value フォルダのstrings.xml

今は日本語でつくってるけど、国際化対応では、このファイルをフォルダごと増殖させてフォルダ名に国コードを設定して中身を対応しておけば、あとはAndroidさんが使っている人のネイティヴ言語と比較して、使えそうなものをチョイスしてくれる仕掛けみたいね

とりあえず、日本語で今は作ってるけどw

で、話を戻して、そのstring.xmlに、ちょこっと登録。

<resources>
    <string name="app_name">Simple Dice</string>
    <!-- ErrorMessage -->
    <string name="DRIE0001">日本語だよ</string>
    <!-- Setting -->
    <item name="DSIZE_MAX" type="integer">200</item>
</resources>

これだけで、ソースコードからはID:DRIE0001、ID:DSIZE_MAX のリソースとして中身が認識できるようになる。

そこで、Contextオブジェクトを参照できるクラスで、取得用のメソッドを作っておいて、

	public String getResourceString(int ID){
		return getContext().getString(ID);
	}

	public Integer getResourceInteger(int ID){
		return getContext().getResources().getInteger(ID);
	}

あとで、このメソッドにIDを渡してやれば、リソースファイルで定義した内容が取れる仕掛け。IDもR.stringクラスやR.integerクラスに登録された状態になっているのでインテリセンスにでてくるから探しに行かなくても大丈夫。

ソースの中で定数定義やら、メッセージ定義やら、そういう固定リソースなものはファイルに出してしまおうね、って事がお作法。うん、覚えた。

後で国際化するにしても、メンテするにしても、リソースファイルの中で完結してくれるなら何よりだよね。

おもしろいなー。こういう仕組み。

以下、呟き。

リソース読み取ればいいって判ったけど、その取得元になるアプリケーションコンテキストの実体は、どこが保持しているんだろう?

アプリケーション起動時、onCreateの段階でもうすでに実体が存在しているので、OSからアプリケーション起動時に、恐らくはシングルトンで作られて、後はそれを提供していく形になってるんじゃないかなぁと考えてる。まぁ、動かして、アドレス見ればわかることだけど、まだきちんと調べてないw

とすると、後続?のクラスたちからコンテキスト使わせるには、そのアドレスを判るように提供する仕組みさえ作っておけば、どこからでもリソース取得できるようになる。具体的には、コンストラクタでコンテキストのアドレス渡してやれば良いってだけだけどね。

ただ、そうすると、反・祖結合、というか、クラス同士の結びつきが相当ベタな形になっちゃうのが、感覚的にどうよ、とか思ったりする。

できるだけ、クラス間って密接な関係取らない方がコード書く時考えること少なくて済むし、バグ探しやすくなるし、リファクタリングしやすくなるし。

そんな風に考えた時、SpringFrameworkってほんと、良くできた仕組みだなぁって思った。

うん、なんとなく、そんなことを思っただけ。

投稿日時 : 2014年7月14日 10:46

コメント

No comments posted yet.

Post Feedback

タイトル
名前
Url:
コメント