5.2. 設定画面の追加 - メイン画面からの遷移

3.アプリ作成 (サンプル)で作成したサンプルアプリに、設定画面を追加していきます。
ここでは、メイン画面から設定画面へ遷移するための処理を作成していきます。

メイン画面に設定画面へ遷移するためのボタンを追加し、そのボタンを押下することで設定画面を表示します。

画面遷移イメージ

メイン画面へ設定ボタン追加

3.アプリ作成 (サンプル)で作成したプロジェクトの Menu フォルダにある、main.xml ファイルにボタンを追加します。
このファイルは、アプリのメニューを定義するファイルです。
端末にメニューボタンがある場合は、メニューボタンを押下したときにこのファイルで定義した内容がアプリのメニューとして表示されます。
Android 4 以降の端末では、基本的にメニューボタンがないため、アプリの ActionBar の部分にメニューが表示されることになります。
(ActionBar は、サンプルアプリでは、上部のアプリ名 SplitTheCost の文字が表示されている部分です。)

各メニューボタンは、item タグで定義します。main.xml は以下のようになります。

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_settings"
        android:icon="@android:drawable/ic_menu_preferences"
        android:orderInCategory="1"
        android:showAsAction="always"
        android:title="@string/action_settings"/>
</menu>

各設定の意味は以下のとおりです。

項目 説明
id 識別のためのidを設定します。
icon ボタンのアイコンを設定します。
@android:drawable に標準で用意されているアイコンがあるので、今回は ic_menu_preferences を使用します。
orderInCategory 複数のメニューがある場合、この数値が大きいものが優先的に表示されます。
今回は1つしかないので1としておきます。
showAsAction アクションバーへメニューをどのように表示するかを設定します。
alwaysとすると常に表示する設定となります。
他には、ifRoomで表示する余裕があれば表示する、neverで常に表示しない、などがあります。

これで、アクションバーの右に設定ボタンが表示されるようになります。

画面遷移処理

メニューボタンが押下されたときに、設定画面を表示する処理を追加します。
この処理は、MainActivity.java に追加します。
以下、追加する部分です。
メニューボタン押下処理は、onOptionsItemSelected メソッドで行います。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ~ 省略 ~
    }
    
    @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;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_settings:
            // 設定ボタン押下処理
            Intent intent = new Intent(MainActivity.this, SettingPrefActivity.class);
            startActivity(intent);
            break;
        default:
            break;
        }
        
        return super.onOptionsItemSelected(item);
    }
}

onCreateOptionsMenu メソッドで、先ほど定義した main.xml ファイルをメニューとして関連付けます。
onOptionsItemSelected メソッドで、設定ボタン押下処理を行います。
ここでは、id が action_settings のときに設定画面に遷移する処理を実装します。

Androidアプリで他の画面に遷移するには、Intent というクラスを使用します。 Intent で、設定画面として表示するクラス SettingPrefActivity を指定し、StartActivity メソッドで画面を表示します。
(SettingPrefActivity クラスは、5.1.2. 画面クラス作成 で作成した設定画面用のクラスです。)

Androidマニフェストファイルへの画面登録

最後に、Androidアプリで画面を追加する場合、AndroidManifest.xmlファイルに追加した画面クラスを登録する必要があります。
これを忘れると、エラーとなり画面遷移ができません。

プロジェクトにある、AndroidManifest.xml ファイルのaplicationタグ内に、以下を追加します。

<activity
    android:name="com.example.splitthecost2.SettingPrefActivity"
    android:label="@string/setting_name" >
</activity>

この定義を追加することで、アプリに設定画面を登録することができます。
android:label は、画面上に表示されるタイトルです。
ここでは、string.xml ファイルに、setting_name に「設定」という文字を追加して label に設定しています。



次は・・・
設定画面の設定値を取得し、設定によって端数の計算を変更する処理を実装していきます。
5.3. 設定値による計算変更