簡易ブラウザの作成(その3)

2010年6月3日(木)
谷口 岳

Activityを追加する

URLの入力を受け取り、親画面のWebView画面に返す新しいActivityを作成しましょう。

まず、新しいJavaクラス GoActivityを作成します。

前回のAboutActivityと同じように作成してみてください。

GoActivity.javaが新たに作成され、以下のようなコードになっていればOKです。


package com.example.mywebview;

import android.app.Activity;

public class GoActivity extends Activity {

}

作成されたActivityにURL入力画面のレイアウトを表示する処理を追加しておきましょう。

以下のコード(赤文字部分)を追加してください。


public class GoActivity extends Activity {
    <i><font color=red>@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.go_activity);
    }</font></i>
}


続いて、画面を定義します。

前回と同じように、URL入力画面のレイアウト定義ファイルgo_activity.xmlを、MyWebView/res/layoutの下に作成します。

以下は、レイアウト例ですので、お好みの形に調整してください。

画面上のUI部品に対する識別子を変更した場合、java側からUIにアクセスする部分も同様に変更する必要がありますので、注意してください。


<?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_horizontal" 
  >
      <!-- スペーサー -->
      <LinearLayout
        android:layout_width="wrap_content
        android:layout_height="wrap_content"
        android:minHeight="50dip"
      </LinearLayout>

    
      <!-- エディット・コントロールのタイトル -->
      <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >
        <TextView
            style="?android:attr/textAppearanceMedium"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/go_edit_title"
         />
      </LinearLayout>
      
      <i><font color=red><!-- エディット・コントロール -->
      <EditText
        android:text="http://"
        android:id="@+id/url_edit_text"
        android:hint="URL"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dip"
        android:layout_marginRight="5dip"
        android:layout_marginBottom="20dip"
        >
      </EditText>  </font></i>

    
      <!-- Go ボタン -->
    <Button 
        android:id="@+id/button_ok"
        style="?android:attr/textAppearanceMedium"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="  OK  "
    />
</LinearLayout>


説明していきます。

今回も、LinearLayout形式を使ってURL入力画面を作成しています。

EditTextが、ユーザーが入力したURL文字列を受け取るエディット・コントロールになります。

ここに入力された文字列をWebViewに引き渡すことになるので、プログラムからアクセスできるように、IDをつけておきます。

android:id="@+id/url_edit_text" という設定が、これにあたります。

続いて、画面に表示する文字列をリソースに追加します。

MyWebView/res/values/strings.xmlに、以下の定義を追加します。


    <string name="go_edit_title">Where do you want to go today?</string>

最後に、manifestにActivityの情報を追加して、Activityの追加は完了です。

MyWebView/AndroidManifest.xmlに、以下の赤文字部分を追加してください。


    --  前略  --
       </activity>

        <activity	android:name=".AboutActivity">
        </activity>	
        <i><font color=red><activity    android:name=".GoActivity">

        </activity></font></i>

    </application>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest> 

メニューから呼び出せるようにする

URL入力画面のレイアウトができたので、これをオプション・メニューから呼び出せるようにします。

親画面(今回で言うと、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;	
        <i><font color=red>case GO_MENU_ID    :
              //Intentの作成
              Intent intentGotoActitvity = new Intent(this,GoActivity.class);
              startActivityForResult(intentGoActitvity, GO_MENU_ID);
              return true;</font></i>
        default    :
              break;
        }
        return super.onMenuItemSelected(featureId, item);
}

Activityを開始する際、startActivityではなく、startActivityForResultを使用している点に注意してください。

startActivityForResultは、開始したActivityから何らかの情報を受け取りたいときに使用します。

今回は、入力されたURL文字列をWebView側で受け取って、URLで指定されたWebページをロードする処理になるので、startActivityForResultを使用します。

この段階で、URL入力画面が表示されるかどうか、テストしてみましょう。

メニュー・アイテムを選択すると、URL入力画面が表示されるはずです(図2)。

図2: URL入力画面

URL入力画面側は、レイアウト表示以外の処理を実装していませんので、エディット・コントロールに文字を入力することはできますが、OKボタンを押しても反応しません。

元の画面に戻るためには、端末の戻るボタンを押すことになります。

タオソフトウェア株式会社 代表取締役

Android OS発表直後からAndroid開発を開始 Android Market上に多数のアプリを公開、また多くの受託案件、コンサルタント等を行い、Androidに特化した企業に転換を図る URL http://www.taosoftware.co.jp/ Twitter tao_gaku

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています