初心者でもAndroidアプリ開発を1から学習できる1日集中入門セミナー。

7章 メニュー

7.1.3 メニューアイコンを使用するプログラム

[Application Name] MenuTest

[Company Domain] intro.f1.co.jp

[Activity Name] MenuTestActivity

文字列リソースの修正

[フォルダ] res/values

[修正] strings.xml

<resources>
    <string name="app_name">MenuTest</string>

    <string name="hello_world">Hello world!</string>
    <string name="help">ヘルプ</string>
    <string name="action_settings">Settings</string>
</resources>

メニューリソースの修正

[フォルダ] res/menu

[修正] menu_menu_test.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" tools:context=".MenuTestActivity">

    <item
        android:id="@+id/item1"
        android:title="@string/help" />
    
    <item
        android:id="@+id/item2"
        android:title="@string/action_settings" />

</menu>

アクティビティファイルの修正

[フォルダ] java/jp.co.f1.intro.menutest

[修正] MenuTestActivity

package jp.co.f1.intro.menutest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;


public class MenuTestActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu_test);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_menu_test, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        switch(id){
            case R.id.item1 :
                Toast.makeText(getApplicationContext(), "「ヘルプ」がクリックされました。",
                        Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item2 :
                Toast.makeText(getApplicationContext(), "「設定」がクリックされました。",
                        Toast.LENGTH_SHORT).show();
                return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

■実行時

ch07_01_01

■メニューボタン押下時

ch07_01_02

3.3 <実習> 簡単アンケートアプリケーション(メニュー版)

[Application Name] EnqueteMenu

[Company Domain] intro.f1.co.jp

[Activity Name] EnqueteMenuActivity

文字列リソースの修正

[フォルダ] res/values

[修正] strings.xml

<resources>
    <string name="app_name">EnqueteMenu</string>

    <string name="action_settings">Settings</string>
    <string name="top_page">トップページへ戻る</string>
    <string name="version">バージョン情報</string>
    <string name="help">ヘルプ</string>
    <string name="name">名前</string>
    <string name="blood">血液型</string>
    <string name="blood_prompt">血液型を選択</string>
    <string name="sex">性別</string>
    <string name="man">男性</string>
    <string name="woman">女性</string>
    <string name="hobby">趣味</string>
    <string name="travel">旅行</string>
    <string name="sports">スポーツ</string>
    <string name="outdoor">アウトドア</string>
    <string name="shopping">ショッピング</string>
    <string name="button">送信</string>
    <string name="title_activity_new_layout">NewLayoutActivity</string>

    <string name="hello_world">Hello world!</string>
</resources>

スピナーリソースの修正

[フォルダ] res/values

[修正] arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="blood">
        <item>A型</item>
        <item>B型</item>
        <item>AB型</item>
        <item>O型</item>
    </string-array>

</resources>

メニューリソースの修正

[フォルダ] res/menu

[修正] menu_enquete_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" tools:context=".EnqueteMenuActivity">
    <item
        android:id="@+id/item1"
        android:title="@string/top_page" />

    <item
        android:id="@+id/item2"
        android:title="@string/version" />
    
    <item
        android:id="@+id/item3"
        android:title="@string/help" />

</menu>

画面レイアウトファイルの修正

[フォルダ] res/layout

[修正] activity_enquete_menu.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".EnqueteMenuActivity" >
    
    <TableLayout
        android:id="@+id/table1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:shrinkColumns="0"
        android:stretchColumns="1">
    
        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
    
            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/name" />
    
            <EditText
                android:id="@+id/editText1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="text"
                android:lines="1" />
        </TableRow>
    
        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
    
            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/sex" />
    
            <RadioGroup
                android:id="@+id/radioGroup1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >
    
                <RadioButton
                    android:id="@+id/radioButton1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:checked="true"
                    android:text="@string/man" />
    
                <RadioButton
                    android:id="@+id/radioButton2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/woman" />
            </RadioGroup>
        </TableRow>
    
        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
    
            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/blood" />
    
            <Spinner
                android:id="@+id/spinner1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:entries="@array/blood"
                android:prompt="@string/blood_prompt"
                android:spinnerMode="dialog" />
        </TableRow>
    
        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
    
            <TextView
                android:id="@+id/textView4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/hobby" />
    
            <TableLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
    
                <TableRow
                    android:id="@+id/tableRow5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >
    
                    <CheckBox
                        android:id="@+id/checkBox1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/travel" />
    
                    <CheckBox
                        android:id="@+id/checkBox2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/sports" />
                </TableRow>
    
                <TableRow
                    android:id="@+id/tableRow6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >
    
                    <CheckBox
                        android:id="@+id/checkBox3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/outdoor" />
    
                    <CheckBox
                        android:id="@+id/checkBox4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/shopping" />
                </TableRow>
            </TableLayout>
        </TableRow>
    
    </TableLayout>
    
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/table1"
        android:text="@string/button" />

</RelativeLayout>

アクティビティファイルの修正

[フォルダ] java/jp.co.f1.intro.enquetemenu

[修正] EnqueteMenuActivity

package jp.co.f1.intro.enquetemenu;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;


public class EnqueteMenuActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_enquete_menu);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_enquete_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.

        //メニューリソースIDを取得
        int id = item.getItemId();

        switch(id){
            case R.id.item1 :
                Toast.makeText(getApplicationContext(), "トップページへ戻ります", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item2 :
                Toast.makeText(getApplicationContext(), "バージョン情報 \nVersion 3.0", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item3 :
                Toast.makeText(getApplicationContext(), "ヘルプを表示します", Toast.LENGTH_SHORT).show();
                return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

■実行時

ch07_02_01

■メニューボタン押下時

ch07_02_02

■メニュー選択時(バージョン情報)

ch07_02_03
PAGETOP
Copyright © 2015 FusionOne Co.,Ltd. All rights reserved.