Androidアプリケーション内で画面を切り替えるコードを紹介します。Androidアプリケーションではアクティビティーを切り替えることで画面切り替えを実現します。
Android SDK R21 での場合
アプリケーション作成情報
- ProjectName : SimpleChangeActivity
- ApplicationName : SimpleChangeActivity
- PackageName : com.ipentec.simplechangeactivity
- Activity : MainActivity
- Androidのバージョンは2.3.3にしました
UI
メインのレイアウトファイル"/res/layout/activity_main.xml"にはボタンを一つ配置します。
また、ボタンのonClickプロパティを設定します。ButtonのonClickプロパティに"onClick_button1"を設定します。
レイアウトファイル、アクティビティーの追加
レイアウトファイル、アクティビティーの追加方法は
こちらの記事を参照してください。
レイアウトファイルの編集
下図の空のレイアウトファイルが追加されますので。レイアウトの切り替えが分かるように、TextViewを一つ追加しておきます。
コード
以下のコードを記述します。
MainActivity.java
package com.ipentec.simplechangeactivity;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.*;
import android.content.*;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClick_button1(View view){
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivity(intent);
}
}
解説
Intent intent = new Intent(MainActivity.this, SubActivity.class);
にて、SubActivityのインテントのインスタンスを作成します。第一引数にはコンテキストを与えます。第二引数はインテントを作成するクラスを与えます。
startActivity(intent);
にて、作成したインテントのインスタンスを開始します。
補足
Windowsアプリなどでは画面はクラスのインスタンスとして作成できますが、Androidアプリの場合はアクティビティのクラスをインスタンス化して画面とする動作ではなく、インテントのインスタンスにアクティビティのクラスをセットすることで画面のオブジェクトになります。
SubActivity
package com.ipentec.simplechangeactivity;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class SubActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.sub, menu);
return true;
}
}
解説
SubActivityには手を加えません。アクティビティー追加時に生成されたコードをそのまま利用します。
実行結果
アプリケーションを実行します。下図の画面が表示されます。画面上のボタンをクリックします。
下図の画面が表示されます。アクティビティーが切り替わり画面が変わりました。
バックボタンに関する処理は記述していませんが、SubActivityの画面でバックボタンを押すと起動時の画面に戻ります。
以前のバージョンでの場合
アプリケーション作成情報
- ProjectName : SimpleChangeActivity
- ApplicationName : SimpleChangeActivity
- PackageName : iPentec.SimpleApp.SimpleChangeActivity
- Activity : SimpleChangeActivityActivity
- Androidのバージョンは2.3.3にしました
UI
メインのレイアウトファイル"/res/layout/main.xml"にはボタンを一つ配置します。また、ボタンのonClickプロパティを設定します。今回は"button1_click"にしました。
レイアウトファイル、アクティビティーの追加
レイアウトファイル、アクティビティーの追加方法は
こちらの記事を参照してください。
レイアウトファイルの編集
下図の空のレイアウトファイルが追加されますので。レイアウトの切り替えが分かるように、TextViewを一つ追加しておきます。
コード
以下のコードを記述します。
SimpleChangeActivityActivity.java
アプリケーションのメインのアクティビティーのクラスです。
package iPentec.SimpleApp.SimpleChangeActivity;
import android.app.Activity;
import android.os.Bundle;
import android.widget.*;
import android.view.*;
import android.content.*;
public class SimpleChangeActivityActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void button1_click(View view){
Intent intent = new Intent(
SimpleChangeActivityActivity.this,
SimpleChangeActivitySubActivity.class);
//startActivityForResult(intent, 0);
startActivity(intent);
}
}
解説
Intent intent = new Intent(SimpleChangeActivityActivity.this, SimpleChangeActivitySubActivity.class);
にて、サブのアクティビティクラスのインテントを作成します。
startActivity(intent);
にて、アクティビティを開始します。アクティビティが開始されると画面が切り替わります。
SimpleChangeActivitySubActivity.java
先ほど紹介した手順で追加したアプリケーションのサブアクティビティーのクラスです。
package iPentec.SimpleApp.SimpleChangeActivity;
import android.os.Bundle;
import android.app.Activity;
public class SimpleChangeActivitySubActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub01);
}
}
解説
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub01);
}
onCreateはメインのアクティビティとほとんど同じです、違いはsetContentView与える引数が、sub01のレイアウトである点が異なります。
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" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="button1_click"
android:text="Button" />
</LinearLayout>
sub01.xml (レイアウトファイル)
追加したレイアウトファイルです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sub Screen" />
</LinearLayout>
AndroidManifest.xml
AndroidManifest.xmlのコードです。GUIで操作するため特にコードエディタで追記する部分はありません。コードは参考です。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="iPentec.SimpleApp.SimpleChangeActivity"
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=".SimpleChangeActivityActivity"
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="SimpleChangeActivitySubActivity"></activity>
</application>
</manifest>
実行結果
アプリケーションを実行します。下図の画面が表示されます。画面上のボタンをクリックします。
下図の画面が表示されます。アクティビティーが切り替わり画面が変わりました。
バックボタンに関する処理は記述していませんが、SubActivityの画面でバックボタンを押すと起動時の画面に戻ります。
エラー
ボタンクリック時に強制終了になる場合は、AndroidManifestにActivityが登録されていない可能性があります。AndroidManifestファイルを確認してください。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-04
作成日: 2012-01-16