ここでは、工学社刊/清水美樹著「Androidプログラミング入門」( ISBN978-4-7775-1610-0 )の著者によるサポート内容をご紹介します。
正誤表等の正確な情報は、工学社開設のサポートページを御参照ください。
ここで御紹介するのは訂正内容のより詳しい説明、発展的な内容などです。


「著者サポートページ」トップへ

レイアウト・ファイルの名前を変更する



訂正:本書4-2節(90ページ)「『main』という名の由来は?」の内容

まずは本書の内容の間違いに対してお詫びいたします。
本書の上記の箇所に、以下のような記述がありました。


「main」の名前の由来は、この「FirstDroid」プロジェクト作成時に、図4-6のように「アクティビティー」に「Main」と名前を付けたことに由来します。
Eclipse(のADTプラグイン)が、そのように作ったのです。
図4-6の枠内の項目を、もし「Hello」という名前にしたら、Eclipseは「hello.xml」というファイルを作ります。


これが間違っておりました。「EclipseのADTプラグイン」は、「アクティビティー」の名前を「Main」にしても「Hello」にしても、「main.xml」という名前を自動で作成します。
筆者の完全な思い込みでした。申し訳ありません。

しかし、メインの画面だから「main.xml」という名前にしなければならないことはありません。それは、Androidの決まりではありません。
なぜ「main.xml」というファイルが「メインの画面」として表示されるのかは、本書第5章5-3節において、Javaのコードとの関係で明らかになります。 Javaのコードを、対応するように書けば、たとえば「hello.xml」というファイルをメインの画面にすることもできるのです。

レイアウト・ファイルの名前をEclipse上で変更する

レイアウト・ファイル名はあとから変更できる

メインの画面を表示するレイアウト・ファイル名は変更できます。ファイル「main.xml」が自動作成されたあと、これを変更することができます。すでにレイアウト・ファイルや、アクティビティ・クラスのソースファイルが、がいろいろに編集されたあとでも問題ありません。
レイアウト・ファイルの名前を変更し、アクティビティ・クラスのソース・ファイル中の記述をひとつ変更すればよいのです。
ただし、Eclipse上での修正は、初めての場合やや迷うかもしれません。方法をここにご紹介しましょう。

ファイル名の変更は「リファクタリング」

Eclipseでは、ファイル名の変更は、多くの場合「リファクタリング」というプログラミング技法のひとつと考えられています。
リファクタリングとは、「同じ結果を出すためのプログラムを、より洗練された書き方にする」という技法です。その場合、ファイル名の変更を伴うこともありますし、ひとつのファイル名を変更すると他のソース・コードも書き換えなければならないことがあるので、それらを確かめながら行うのです。
実は、ここで行うファイル名の変更は、「リファクタリング」の考え方からははずれています。
でも、Eclipse上での作業手順は同じです。

Eclipseの「パッケージ・エクスプローラ」で「main.xml」を右クリックして、メニューから「リファクタリング」を選びます。すると、サブ・メニューに「名前変更」が出てきます。
図1 名前変更は「リファクタリング」のサブ・メニュー


図2のような「リソース名の変更」というウィンドウが出てきますので、新しいファイル名を入力します。
図2では、「enter.xml」にしてみました。拡張子「xml」も省略せずに指定します。
レイアウト・ファイルにおいては、名前の変更作業はこれで完了です。「OK」ボタンをクリックします。
図2 新しいファイル名を入力

アクティビティ・クラスのソース・ファイルにエラーが出る

すると、「パッケージ・エクスプローラ」上のプロジェクト・フォルダに、エラーの表示が現れます。エラーの正体は、このレイアウト・ファイルを使用するアクティビティ・クラスのソース・ファイルです。本書のプロジェクトであれば「Main.java」です。
図3 ソース・ファイル「Main.java」にエラーの印


メソッド「onCreate」の「R.layout.main」のところに赤い波線が引かれています。
図4 「R.layout.main」にエラー


そこで、これを「R.layout.enter」に直します。ファイルを保存すれば、エラーの印は消えます。
図5 「R.layout.enter」に直す

R.javaは自動で変更される

上記で「R.layout.enter」と書けばよいのは、本書第5-4節で解説した「『R』の中の『layout』の中の『main』」が、「『R』の中の『layout』の中の『enter』」に、自動で変更されるからです。「R.java」の内容で確かめてみることができます。
図6 「R.java」の記載が変更され、「main」が「enter」に書き換わっている



「著者サポートページ」トップへ