HelloWorldのソースコードについて考える 続き
前回、HelloWorldのソースコードについて考える で、実際に稼動するHello,Android! からサンプル の使い方を探ろうとしたのですが、いまいち解決しませんでした。
そもそも、Hello,Android!のサンプル の一行が、まったくわかりませんでした。
setContentView(R.layout.hello_world);
この一行について、もう一度よく考えてみます。とりあえず、setContentView()メソッドの引数にR.layout.hello_worldを取っていることは、わかります。
setContentView()メソッドは、setText()でセットした文字列をAndroidの画面に表示する役目があるらしい??ので、おそらくR.layout.hello_worldは、「Hello!Android!」のような任意の文字列をセットする役目がありそうです。
そこで、先ず最初に「R(ラージアール)」について考えてみます。これは何らかの意味を持った記号だと思っていた(思い込んでいた)のですが、某所で質問した所、偉い方々が教えてくれました。(教えて君ですいません。)
- 229 :デフォルトの名無しさん:2007/11/19(月) 22:28:42
- resフォルダにあわせてR.Javaは自動生成される。
中身はリソースID。
- 235 :デフォルトの名無しさん:2007/11/20(火) 00:23:43
- 実際に Eclipse で Android プロジェクト作ってみたらすぐわかると思うんだが・・・
- 236 :デフォルトの名無しさん:2007/11/20(火) 06:37:03
- あんまいじめんなや、
- 237 :デフォルトの名無しさん:2007/11/20(火) 07:39:13
- res/layout/ フォルダみりゃ一発で分かると思うんだがなぁ。
- 238 :228:2007/11/20(火) 07:43:22
- >>235-237
ありがとうございます
たしかにオートコンパイルされたものを眺めたらわかりそうです
res/layoutなんてのも出来てたんですね
- 239 :デフォルトの名無しさん:2007/11/20(火) 07:46:13
- 逆だ。res/ の内容をリソースとしてバイナリに変換した際に R.javaがビルドのたびに生成される。
更にsetContentView(R.layout.hello_world);について強力なヒントが!(つーか、答えそのもの)
- 233 :デフォルトの名無しさん:2007/11/19(月) 23:17:51
- >>232
public class layout {
public class Hello_world implements TextView {
public Hello_workd { setText("Hello, Android"); }
}
public static Hello_world hello_world = new Hello_world();
}
ここまで、ヒントもらって、やっとわかったああああああああ!
って言ってもAndroidについてじゃあ、ありません。javaの超基本についてですw。おそらくjavaと言うのは、ツリー型の構造をしていて、ツリーの頂点にjavaの基本となるような機能をもったクラスがあって、そのクラスの下にクラスがどんどんくっついていくような感じじゃないかと。
調べてみるとありました。Objectクラス
Object クラスは、クラス階層のルートです。すべてのクラスは、スーパークラスとして Object を持ちます。配列を含むすべてのオブジェクトは、このクラスのメソッドを実装します。
らしいです。ここから推測するに、AndroidもObjectクラスの木にぶらさがったクラスで、Android自身もAndroidの頂点になるクラスがあって、そのクラスにどんどんAndroid独自の機能をもったクラスがぶら下がっているのではないかと想像できます。
この考えでいくと、まずはAndroidがどのような設計で、どう動くかをおおまかに知って、それからsetContentView(R.layout.hello_world);については、某所の偉い方々に聞いた通りEclipseのプロジェクト内のディレクトリ構造や自動生成されるファイルを見ればわかるんじゃないかな???
ところで、実はエクササイズ(日本語版)なる練習用サンプルコードが「Hello,Android!」以外にも用意されていることがわかりました。
次回からは、このエクササイズ(日本語版)をやりすすめてみたいと思います。一つのことを深く調べていくのも大事だと思いますが、ある程度の理解で先へすすめてみるのも学習の効率を上げると思うので…
もちろん、並行してsetContentView(R.layout.hello_world);を理解するため、javaの基本から理解することと、Androidがどのような設計で、どう動くかを考えてみようと思います。
| 固定リンク | コメント (2) | トラックバック (0)













