SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Android開発のためのJava SE再入門

Android開発におけるクラスのおさらいと主なメソッド

Android開発のためのJava SE再入門(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

onCreateメソッドを読み解く

 では、ActivityクラスのonCreateメソッドとは、どんなメソッドなのでしょうか。じつはActivityクラスのonCreateメソッドは、Androidのフレームワークから呼び出されるメソッドなのです。

 呼び出されるタイミングは、アクティビティが作成されるときなので、onCreateメソッドは、PCのデスクトップアプリケーションにたとえると、mainメソッドに相当するものです。

スーパークラスへのアクセス(superキーワード)

 一般にonCreateメソッドでは、アプリケーションの初期化などを記述します。HelloAndroidアプリケーションでも、初期化処理が生成されています。

 onCreateメソッドの最初の(8)行では、superキーワードを使って、スーパークラスであるActivityオブジェクトのonCreateメソッドを呼び出しています。

 サブクラスのメソッドのなかから、スーパークラスのフィールドやメソッドを参照する場合、自分のクラスのメソッドやフィールドと区別するために、このようにsuperキーワードを用いて指定します。

 ここで最初にActivityクラスのonCreateを呼び出しているのは、初期化に必要な共通の処理がActivityクラスで定義されているからです。ActivityクラスのonCreateメソッドは、Bundleクラス型の引数を持ち、引数のsavedInstanceStateをそのまま指定しています。Bundleクラスは、Android SDKのクラスで、画面の状態を保持しているオブジェクトです。

setContentViewメソッド

 次の(9)行が、アプリケーション独自の処理となります。ここでは、Activityクラスで定義されたsetContentViewメソッドを呼び出しています。このメソッドはその名のとおり、画面のビューを設定するものです。

 ビューとは、画面処理を行うオブジェクトです。Activityクラスのサブクラスは画面ごとに定義しますが、それ自体で画面の処理を行うのではなく、画面処理は、ビューというオブジェクトが担当しています。

 このsetContentViewメソッドは、引数として画面レイアウトを定義したXMLファイル指定します。このXMLをもとにして、ビューを作成するという意味になります。

Rクラス

 (9)行のsetContentViewメソッドの引数R.layout.mainは、少し分かりにくい記述ですが、自動的に生成された、前述のRクラスのなかで定義された定数です。Rクラスは、以下のようにリソースを示すID(定数値)が定義されたものです。

リスト3 R.java
package codezine.androidjava.chap1;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f040001;
        public static final int hello=0x7f040000;
    }
}

 Rクラス内には、さらにいくつかの定数クラスがあります。drawableクラスは画像ファイルのリソースIDの定義、layoutクラスでは、画面レイアウトを定義したXMLファイルを示すIDの定義、そしてstringクラスには、文字列のリソースIDが定義されています。

 つまりR.layout.mainとは、画面レイアウトを定義したXMLファイルのIDで、そのXMLファイルが、main.xmlということです。

 Androidアプリケーションでは、画面のレイアウトは、プログラムとして記述するのではなく、XMLベースのファイルに定義するほうが一般的になっています。もちろんすべてプログラムコードで記述することも可能ですが、縦向き、横向きなど、さまざまな表示方法に対応するには、XMLベースのほうが容易です。

レイアウト定義ファイルの編集

 このファイルの編集は、GUI画面で可能です。Eclipseのパッケージ・エクスプローラーで、main.xmlをダブルクリックすると、MicrosoftのコンパイラツールのようなGUI編集画面が表示されます。

図1 main.xml編集画面
図1 main.xml編集画面

 この画面は、エミュレータで起動したものと同じ画面になっているはずです。デフォルトでこのような文字列が画面に配置されていたため、ソースには何も記述しないのに表示されたというわけです。

 以上が、HelloAndroid.javaの内容の説明でした。次は、このクラスに少しコードを追加してみましょう。

次のページ
呼びだされるメソッド

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Android開発のためのJava SE再入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 高江 賢(タカエ ケン)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5995 2011/06/29 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング