まずは単純にアクティビティを切り替えるだけ。データの受け渡し等は考慮しないパターンです。Intentクラスでどのアクティビティを呼ぶか設定して、startActivity()メソッドでそのアクティビティを呼び出します。
ActivityTest1aActivity.java
package jp.co.triware.samples.ActivityTest1a;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ActivityTest1aActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnOpen = (Button)findViewById(R.id.open_btn);
btnOpen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), SubActivity.class);
startActivity(intent);
}
});
}
}
SubActivity.java
package jp.co.triware.samples.ActivityTest1a;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class SubActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub);
Button btnClose = (Button)findViewById(R.id.close_btn);
btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
MainActivity (ActivityTest1a.java)は最初に表示する画面です。ボタンをクリックしたらSubActivity(.java)を呼び出します。
呼び出される側のSubActivityは、これまでに作ってきたサンプル(アクティビティ)と作りはなんら変わりありません。ボタンをクリックしたときに、finish()メソッドを呼び出していますが、これは自アクティビティを終了するためのメソッドです。
プロジェクトの設定とXMLレイアウトファイルは次の通りです。
Androidプロジェクトの設定
ビルドターゲットや最小SDKバージョンは、お使いの開発環境に合わせて設定してください。
プロジェクト名: ActivityTest1a アプリケーション名: ActivityTest1a パッケージ名: jp.co.triware.samples.ActivityTest1a アクティビティーの作成: ActivityTest1aActivity
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Main Activity"
/>
<Button
android:id="@+id/open_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OPEN"
/>
</LinearLayout>
sub.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sub Activity"
/>
<Button
android:id="@+id/close_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CLOSE"
/>
</LinearLayout>
XMLレイアウトファイルもこれまでに作ったものと同じですね。
さて、ここで注意すべき点がひとつあります。アクティビティを追加すると、それをマニフェストファイルに記述しなくてはなりません。
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.co.triware.samples.ActivityTest1a"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".ActivityTest1aActivity"
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=".SubActivity" />
</application>
</manifest>
「<activity android:name=".SubActivity" />」を追加しました。これを記述しないと、実行時にアクティビティが見つからないというエラーが発生します。
実行結果
「Main Activity」画面の「OPEN」をクリックすると「Sub Activity」画面が表示されます。「Sub Activity」画面の「CLOSE」をクリックすると「Sub Activity」画面が閉じて、「Main Activity」画面に戻ります。
次回は、呼び出したアクティビティから「戻り値」を取得するためのサンプルを作る予定です。


0 件のコメント:
コメントを投稿