【androidjava】アクションバーにボタンをつけて各々に機能を付ける初歩的かつ基礎的な方法

アクションバーに何らかの機能を付けるときは以下のように

書くことで実装することができます。


機能が何もないボタンを実装する方法

例として右上に二つのボタンをつけるとします。

①res内にmenuというフォルダを作成

②新規xml・main.xmlを作成

③レイアウトを作成


<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/reload"
        android:icon="@drawable/reload_black"
        android:title="@string/reload"
        app:showAsAction="always" />
    <item
        android:id="@+id/menu_share"
        android:icon="@drawable/share"
        android:orderInCategory="100"
        android:title=""
        app:showAsAction="always" />
</menu>

[java]

item~で任意の画像を追加することで作成することができます。

これで無期能ボタンは作成できました。

後はそれぞれに機能を持たせます。

アクションバーの機能は、switch文を使ってidを仕分けることで

実装することが出来ます。

まずはオプションメニューを作成・初期化するためにonCreateOptionsMenu

を作成します。

[java]
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // オプションメニューを作成する
        getMenuInflater().inflate(R.menu.menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

その後機能ごとにswitchでidを識別。caseで各々で実装したい機能を記述。

//メニュー別に押したときの動作を切り分ける
    @Override
    public boolean onOptionsItemSelected(MenuItem menu) {
        int id = menu.getItemId();
        switch (id){
            case android.R.id.home:
                SharedPreferences.Editor edit = datas.edit();
                edit.clear();
                edit.apply();
                finish();
                break;
            case R.id.reload:
                finish();
                startActivity(getIntent());
                break;
            case R.id.menu_share:
                Intent sendIntent = new Intent();
                sendIntent.setAction(Intent.ACTION_SEND);
                sendIntent.putExtra(Intent.EXTRA_TEXT, "https://なんとかかんとか.txt");
                sendIntent.setType("text/plain");

                Intent shareIntent = Intent.createChooser(sendIntent, null);
                startActivity(shareIntent);
                break;
        }
        return super.onOptionsItemSelected(menu);
    }

上から①戻る、②リロード、③シェアになります。

軽めの機能であればこのように簡単に書くことが出来ます。

三番目のシェア機能については後日記事を書いていきたいと思います。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG