簡易ブラウザの作成(その2)
メニューから呼び出せるようにする
About入力画面のレイアウトができたので、これをオプション・メニューから呼び出せるようにします。
オプション・メニューをユーザーが選択すると、親画面(今回でいうとWebView画面)のonMenuItemSelectedが呼び出されます。
このメソッド内に自分が定義したメニューに対する処理を記述することになります。
MyWebView/src/com.example.mywebview/MyWebView.javaに、以下のコードを追加してください。
public boolean onMenuItemSelected(int featureId,MenuItem item){
switch (item.getItemId()) {
case ABOUT_MENU_ID :
//Intentの作成
Intent intentAboutActitvity = new Intent(this,AboutActivity.class);
startActivity(intentAboutActitvity);
return true;
default :
break;
}
return super.onMenuItemSelected(featureId, item);
}
わたってきたMenuItem内には、選択されたメニュー・アイテムの情報が入っています。
メニューアイテム(ABOUT_MENU_ID)が選択された場合、item.getItemId はABOUT_MENU_IDを返します。
プログラムはこの値を判定してAboutActivity開始用のIntent作成します。そしてstartActivityを使用して Activity を開始します。
ではテストしてみましょう。
メニュー・アイテムを選択すると、About画面が表示されるはずです。
About画面側はレイアウト表示以外の処理を実装していませんので、OKボタンを押しても反応しません。
元の画面に戻るためには端末の戻るボタンを押すことになります。
Aboutダイアログの処理を実装する
では、OKボタンが押されたときに画面が閉じるように、Aboutダイアログ側の処理を書いていきましょう。
MyWebView/src/com.example.mywebview/AboutActivity.javaに以下のコードを追加してください。
public class AboutActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_activity);
// OKボタン
<i><font color=red>Button okButton = (Button)findViewById(R.id.button_ok);
okButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
// 閉じる
finish();
}
});</font></i>
}
}
ボタンにアクセスするためにidを使用してボタンのクラス(インスタンス)を取得します。
そして、setOnClickListener()を使用してボタンが押された時の処理をボタンに対して設定します。
onClickでは、finishを呼び出すことでActivityを終了させています。
Activityが終了することでAbout画面が閉じ、呼び出し元の画面に戻ることになります。
ではもう一度テストしてみましょう。
今度はOKボタンを押すとAbout画面が閉じて元の画面(WebViewの画面)に戻るようになっていると思います。
まとめ
ActivityとIntentはAndroidアプリケーションの特徴的な部分です。新しいActivityを追加してみるなどして、動きをよく理解しておいた方が良いと思います。
今回About画面も追加したことで、何となくアプリケーションらしい感じになってきました。
しかし、今は起動時に毎回GoogleのWebページを表示するようになっていて、Googleで検索しないと他のサイトに移動できません。
このままでは少々不便ですので、次回は、直接他の画面に移動できるようにURLを指定する画面を追加してみましょう。
この機能追加を通して、Activity間でのデータの受け渡し方について説明してみたいと思います。それでは、次回をお楽しみに。