アクティビティの追加

広告

プロジェクトを新規に作成する時、アクティビティに関するクラスを1つ作成することができますが、実際のアプリケーションでは複数のアクティビティを使用する場合がほとんどだと思います。ここでは作成済みのプロジェクトにアクティビティを追加する方法について解説します。

※ アクティビティから別のアクティビティを開始するにはインテントと呼ばれる機能を使います。インテントについては「インテントを使った画面遷移」で解説します。

1.クラスファイルの追加
2.ソースコードの修正
3.AndroidManifest.xmlの修正
4.アプリケーション起動時に開始するアクティビティの指定

最初にクラスファイルを追加する方法を確認します。Eclipseのパッケージ・エクスプローラーでアクティビティを追加したいプロジェクトの「src」の中にある「パッケージ名(今回の場合はjp.javadrive.sample1)」の上で右クリックして下さい。

p3-1

メニューが表示されます。

p3-2

「新規」メニューの中の「クラス」メニューをクリックして下さい。

p3-3

「新規Javaクラス」作成のためのウィンドウが表示されます。

p3-4

「名前」はアクティビティクラスの名前を指定します。今回は「AnotherActivity」としました。「修飾子」は今回は「public」を選びます。

「スーパークラス」はデフォルトで「java.lang.Object」となっています。今回はアクティビティ用のクラスを作成しますのでActivityクラスを継承したクラスを作成します。そのため「android.app.Activity」と入力して下さい。(右側にある「参照」ボタンでクラス名を検索することもできます)。

入力が終わりましたら画面下の「完了」ボタンを押して下さい。

p3-5

新しいソースファイルが作成されました。

p3-6

作成された新しいソースファイルをダブルクリックすると、ソースエディタ画面でファイルの中身が表示されます。

package jp.javadrive.sample1;

import android.app.Activity;

public class AnotherActivity extends Activity {

}

プロジェクトの作成時に自動的に作成されるアクティビティクラスと違い、何も記載されていません。今回は次のように修正を加えてみました。

package jp.javadrive.sample1;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class AnotherActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("AnotherActivity");
        setContentView(textview);
    }
}

このアクティビティが開始されると画面上に「AnotherActivity」と表示されます。

続いて「AndroidManifest.xml」の修正を行います。このファイルはアプリケーションに含まれるアクティビティなどに関する設定を定義するファイルと考えて下さい。

ではパッケージ・エクスプローラー上で対象のプロジェクトの中にある「AndroidManifest.xml」をダブルクリックして下さい。

p3-7

Eclipseの画面中央に「AndroidManifest.xml」ファイルに関する編集を行うビューが表示されます。画面下部のタブで「AndroidManifest.xml」タブをクリックして下さい。次のように表示されます。

p3-8

現在は次のように表示されていると思います。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.javadrive.sample1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Sample1Activity"
            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>

</manifest>

アクティビティを追加するにはapplication要素の中にactivity要素を追加します。具体的には下記の部分を追加します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.javadrive.sample1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Sample1Activity"
            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=".AnotherActivity"
            android:label="@string/app_name" >
        </activity>
    </application>

</manifest>

これで新しいアクティビティが追加されました。

新しいアクティビティが追加できましたので、アプリケーションが起動した時に最初に呼び出されるアクティビティを先程作成したアクティビティに変更してみます。「AndroidManifest.xml」ファイルを再度見て下さい。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.javadrive.sample1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Sample1Activity"
            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=".AnotherActivity"
            android:label="@string/app_name" >
        </activity>
    </application>

</manifest>

上記の部分をそっくり新しく追加したアクティビティに移します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.javadrive.sample1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Sample1Activity"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name=".AnotherActivity"
            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>

</manifest>

これでアプリケーションが実行された時に自動的に呼び出されるアクティビティが「AnotherActivity」アクティビティになりました。(この作業の意味については別の機会に解説します)。

p3-9

ではアプリケーションを実行してみます。次のように表示されます。

p3-10

画面上には「AnotherActivity」と表示されており、アプリケーションを起動した時に最初に開始するアクティビティがAnotherActivityアクティビティになっていることが確認できました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)