「九章:画面遷移を行う」の編集履歴(バックアップ)一覧はこちら
「九章:画面遷移を行う」(2013/09/03 (火) 14:44:57) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
これまで単一の画面(Activity)だけでアプリケーションを動作させてきたが、
開発が進んでくると複数のActivityを用いてアプリケーションを動作させたいという
場面が出てくるかもしれない。
そんなときの為に予め簡単な画面遷移のやり方を覚えておくと多少は役に立つと思う。
とりあえずプロジェクトを作成しておく。
#region(準備)
・別のAcitivityクラスを追加(SubActivity.java)
srcフォルダーをクリックするとパッケージが出てくると思うので、そこで右クリックして
新規→クラスを選択する。
新規Javaクラス作成ウィンドウが開いたら「名前」でクラスファイル名を設定し、
次に「スーパークラス」の横から参照をクリックする。すると型を選択してくださいと出るので、
「activity」と打つと候補が下に出てくるので「Activity」を選択する。
完了をクリックしてクラスファイルの作成を終了する。
作成されたSubActivity.javaを見るとクラスがActivityを継承(extends)しているのが分かる。
ちゃんとアクティビティクラスとして作成されたわけだが、今のままではAndroid側からは
アクティビティとして認められていない。
これを認めさせるためにはAndroidManifest.xmlを編集してあげる必要がある。
#region(AndroidManifest.xmlの編集)
#highlight(linenumber){{
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tomato.intenttest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.***.intenttest.MainActivity"
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">
</activity>
</application>
</manifest>}}
新しく追加している部分は25~27行目。AndroidManifest.xmlに
<activity 追加したいアクティビティ名></activity>で記述することでアクティビティを
Andoroid側で認識することが出来るようになる。
これで準備が完了したので、プログラム部分をいじっていく。
#endregion
#endregion
#region(遷移元のプログラミング)
ボタンを押すことで遷移したいアクティビティに移動するプログラムを作る。
レイアウトのxmlを編集してボタンを配置しておく。
ソース↓
#highlight(linenumber, java){{
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ボタンのクリックイベントを使えるようにする
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//インテントを使用する
Intent intent = new Intent(MainActivity.this, SubActivity.class);
//新たなアクティビティを開始する
startActivity(intent);
}
}
}}
#endregion
#region(遷移元側の解説)
・インテント
なんだかとにかく色んなことに使える物。
今回は単純にアクティビティを移動するためだけに使ったが、この使い方だけでも
遷移先のアクティビティに情報を渡したりとか出来る(今回はスルーするけど)すごいやつ。
インテントのインスタンス生成時に第一引数に今いるアクティビティを記述し、第二引数に
移動したい先のクラス名.classと記述したらstartActivitiy(インテント)とするだけで簡単に
遷移できてしまう。
#endregion
#region(移動先のプログラミング)
先ほど確認したとき本当に何も記述されていなかったはずなので、とりあえず何か表示してみる。
ソース↓
#highlight(linenumber, java){{
public class SubActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//レイアウトを設定する
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
//layoutをアクティビティのビューとしてセットする
setContentView(layout);
//アクティビティに表示するテキスト
TextView textView = new TextView(this);
textView.setText("SubActivity jumped!");
//layoutにtextViewを追加する
layout.addView(textView);
Button button = new Button(this);
button.setText("back");
button.setOnClickListener(this);
//layoutにbuttonを追加する
layout.addView(button);
}
@Override
public void onClick(View v) {
try{
finish();
}catch(Exception ex){
Toast.makeText(SubActivity.this, "MainActivityへの画面遷移に失敗しました", Toast.LENGTH_LONG).show();
}
}
}
}}
#endregion
#region(遷移先の解説)
クリックしたら遷移先は&bold(){finish()}によって終了される。
終了されると遷移元のActivityに帰ってくるようになっている。
そして今回の内容とは関係ないけど重要なことを
#endregion
これまで単一の画面(Activity)だけでアプリケーションを動作させてきたが、
開発が進んでくると複数のActivityを用いてアプリケーションを動作させたいという
場面が出てくるかもしれない。
そんなときの為に予め簡単な画面遷移のやり方を覚えておくと多少は役に立つと思う。
とりあえずプロジェクトを作成しておく。
#region(準備)
・別のAcitivityクラスを追加(SubActivity.java)
srcフォルダーをクリックするとパッケージが出てくると思うので、そこで右クリックして
新規→クラスを選択する。
新規Javaクラス作成ウィンドウが開いたら「名前」でクラスファイル名を設定し、
次に「スーパークラス」の横から参照をクリックする。すると型を選択してくださいと出るので、
「activity」と打つと候補が下に出てくるので「Activity」を選択する。
完了をクリックしてクラスファイルの作成を終了する。
作成されたSubActivity.javaを見るとクラスがActivityを継承(extends)しているのが分かる。
ちゃんとアクティビティクラスとして作成されたわけだが、今のままではAndroid側からは
アクティビティとして認められていない。
これを認めさせるためにはAndroidManifest.xmlを編集してあげる必要がある。
#region(AndroidManifest.xmlの編集)
#highlight(linenumber){{
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tomato.intenttest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.***.intenttest.MainActivity"
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">
</activity>
</application>
</manifest>}}
新しく追加している部分は25~27行目。AndroidManifest.xmlに
<activity 追加したいアクティビティ名></activity>で記述することでアクティビティを
Andoroid側で認識することが出来るようになる。
これで準備が完了したので、プログラム部分をいじっていく。
#endregion
#endregion
#region(遷移元のプログラミング)
ボタンを押すことで遷移したいアクティビティに移動するプログラムを作る。
レイアウトのxmlを編集してボタンを配置しておく。
ソース↓
#highlight(linenumber, java){{
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ボタンのクリックイベントを使えるようにする
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//インテントを使用する
Intent intent = new Intent(MainActivity.this, SubActivity.class);
//新たなアクティビティを開始する
startActivity(intent);
}
}
}}
#endregion
#region(遷移元側の解説)
・インテント
なんだかとにかく色んなことに使える物。
今回は単純にアクティビティを移動するためだけに使ったが、この使い方だけでも
遷移先のアクティビティに情報を渡したりとか出来る(今回はスルーするけど)すごいやつ。
インテントのインスタンス生成時に第一引数に今いるアクティビティを記述し、第二引数に
移動したい先のクラス名.classと記述したらstartActivitiy(インテント)とするだけで簡単に
遷移できてしまう。
#endregion
#region(移動先のプログラミング)
先ほど確認したとき本当に何も記述されていなかったはずなので、とりあえず何か表示してみる。
ソース↓
#highlight(linenumber, java){{
public class SubActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//レイアウトを設定する
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
//layoutをアクティビティのビューとしてセットする
setContentView(layout);
//アクティビティに表示するテキスト
TextView textView = new TextView(this);
textView.setText("SubActivity jumped!");
//layoutにtextViewを追加する
layout.addView(textView);
Button button = new Button(this);
button.setText("back");
button.setOnClickListener(this);
//layoutにbuttonを追加する
layout.addView(button);
}
@Override
public void onClick(View v) {
try{
finish();
}catch(Exception ex){
Toast.makeText(SubActivity.this, "MainActivityへの画面遷移に失敗しました", Toast.LENGTH_LONG).show();
}
}
}
}}
#endregion
#region(遷移先の解説)
クリックしたら遷移先は&bold(){finish()}によって終了される。
終了されると遷移元のActivityに帰ってくるようになっている。
そして今回の内容とは関係ないけど、LinearLayoutを用いることでレイアウトのxmlを
いじることなくプログラム内でレイアウトを完結させることも可能。これ結構重要。
#endregion