アクティビティの追加
入力画面と結果画面など1つのアプリケーションでは複数の画面を使用する場合が多いと思います。プロジェクトを作成する時に(指定すれば)自動的にアクティビティを一つ作成してくれますが、複数の画面を使用する場合のためにEclipseを使ってアクティビティを追加する方法を確認しておきます。
なおアクティビティから別のアクティビティを開くといったことを行うにはインテントと呼ばれる機能を使います。こちらは別のページで詳しく確認しますのでここではアクティビティの追加方法だけを見ておいて下さい。
クラスファイルの追加
まず最初に同じパッケージの中にクラスファイルを追加します。パッケージ・エクスプローラーでアクティビティを追加したいプロジェクトの「src」>「パッケージ名(今回の場合はjp.javadrive.sample)」の上で右クリックして下さい。
表示されたメニューの中から「新規」>「クラス」メニューをクリックして下さい。
「新規Javaクラス」作成のためのウィンドウが表示されます。
「名前」はアクティビティクラスの名前を指定します。今回は「Test3_1Activity」としました。「修飾子」は今回は「public」を選びます。
「スーパークラス」はデフォルトで「java.lang.Object」となっています。今回はアクティビティ用のクラスを作成しますのでActivityクラスを継承したクラスを作成します。そのため「android.app.Activity」と入力して下さい。(右側にある「参照」ボタンでクラス名を検索することもできます)。
入力が終わりましたら画面下の「完了」ボタンを押して下さい。
同じパッケージの中に新しいクラスが記述されたファイルが作成されました。
ソースコードの修正
先ほどのようにクラスを作成した場合、デフォルトでは次のようなソースコードが作成されています。
package jp.javadrive.sample;
import android.app.Activity;
public class Test3_1Activity extends Activity {
}
実際にアクティビティを呼び出した時に何か表示されるようにソースコードを次のように修正します。
package jp.javadrive.sample;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Test3_1Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Test3_1Activity");
setContentView(tv);
}
}
この部分はあくまで確認用ですので特に意味はありません。このアクティビティが表示されると画面上に「Test3_1Activity」と表示されます。
AndroidManifest.xmlの修正
続いて「AndroidManifest.xml」の修正を行います。このファイルはアプリケーションに含まれるアクティビティやサービスなどに関する設定を定義するファイルと考えて下さい。
ではパッケージ・エクスプローラー上で対象のプロジェクトの中にある「AndroidManifest.xml」をダブルクリックして下さい。
ソースエディタと同じ位置にXMLファイルの設定用のウィンドウが表示されます。画面下部のタブで「AndroidManifest.xml」タブをクリックして下さい。
※他のタブを開くと対象となるXMLファイルをGUIで設定も可能なようですが、少々分かりにくいので直接XMLファイルを編集します。
現在は次のように表示されていると思います。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.javadrive.sample"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SampleActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
アクティビティを追加するにはapplication要素の中にactivity要素を追加します。具体的には下記の部分を追加します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.javadrive.sample"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SampleActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Test3_1Activity"
android:label="@string/app_name">
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
これで新しいアクティビティが追加されました。
画面下部の「アプリケーション」タブをクリックして頂くと、現在アプリケーションに追加されているアクティビティなどの一覧を確認することができます。
アプリケーション起動時に表示されるアクティビティの指定
現在の設定ではアプリケーションが起動した時に最初に呼び出されるアクティビティは「SampleActivity」アクティビティに設定されています。これは先ほどの「AndroidManifest.xml」の次の部分で設定されています。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.javadrive.sample"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SampleActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Test3_1Activity"
android:label="@string/app_name">
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
では最初に起動されるアクティビティを「Test3_1Activity」アクティビティに変更してみます。次のように変更して下さい。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.javadrive.sample"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SampleActivity"
android:label="@string/app_name">
</activity>
<activity android:name=".Test3_1Activity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
SampleActivityアクティビティの子要素であったintent-filter要素をそっくりTest3_1Activityアクティビティの要素の下へ移しました。(インテントについては他のページで詳しく解説します。また「android.intent.category.LAUNCHER」の部分はAndroid端末のランチャーにアプリケーションを表示するかどうかの設定です)。
これでアプリケーションが実行された時に自動的に呼び出されるアクティビティが「Test3_1Activity」アクティビティになりました。
ではアプリケーションを実行してみます。
アプリケーションが実行されて最初に表示されるアクティビティが「Test3_1Activity」となったことが確認できました。
( Written by T.buzz.Ikura+ )