Android Studio 設定画面の作り方からアクティビティで参照する方法まで(1)

Android Studio を使ってスマートフォンアプリケーションを開発していますが設定画面を作るのに苦労したので3回に分けて記録を残しておきます。

Web 検索すると設定画面の作り方について書かれた記事がたくさんあります。ただ記事の多くは部分的な要点に留まり、設定画面の設定値を Activity からどうやって参照するのかまで総合的に記載されたものはほとんどありませんでした。

Nobuki HIRAMINE さんの「設定アクティビティの作成」を参考に設定画面の作り方から Activity からどうやって参照するのかまでを自分なりに Java 言語でコードを書いてみました。GitHubに各段階のプロジェクトをアップロードしているのでプロジェクトの詳細を参照することができます。

*掲載している図はクリックすると画面全体に最大化できます。

開発環境は下記になります。

図1 Android Studio Koala

Android Studio Koala | 2024.1.1 Patch 1
Build #AI-241.18034.62.2411.12071903, built on July 11, 2024
Runtime version: 17.0.11+0–11852314 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 4078M
Cores: 12
Non-Bundled Plugins:
com.intellij.ja (241.271)
com.intellij.marketplace (241.18034.106)

Gradle Plugin Version 8.5.1

プロジェクト作成

Android Studio を立ち上げると Android Studio へようこそ画面が表示されます。
プロジェクト > New Project を選択します。(図2)

図2 Android Studio へようこそ画面

新規プロジェクトテンプレート画面が表示されます。
Phone and Tablet > Empty Views Activity > 次へ(図3)

図3 Empty View Activity を選択

新規プロジェクト入力フォームが表示されます。
Name に My Application を入力します。
Language は Java を選択して「完了」をクリックしてしばらく待ちます。(図4)

図4 プロジェクト名の入力と言語の選択

プロジェクトが自動生成されました。(図5)

図5 自動生成されたプロジェクト

プロジェクトのフォルダ名とファイル名を確認してみました。(図6)

図6 プロジェクトのフォルダとファイル名

図7 EmptyActivity

 

ここまでで作成したプロジェクトを Android Studio のエミュレータで実行してみました。(図7)

プロジェクト全体は GitHub にアップロードしています。1_preference_EmptyActivity

 

 

 

 

設定アクティビティの作成

プロジェクトペイン > app > java > ドメイン.パッケージ名 を右クリックすると
メニューツリーが現れるので、
新規 > Activity > Settings Views Activity を選択します。(図8)

図8 Settings View Activity を選択

New Android Activity の設定画面が表示されるので、Activity Name に「SettingsActivity」と入力してSource Language にJavaを選択して「完了」をクリックします。(図9)

図9 Activity Name 「SettingsActivity」を入力して「完了」

「SettingsActivity.java」が自動的に生成されました。(図10)

図10 SettingsActivity.java

レイアウトファイル「settings_activity.xml」が自動的に生成されました。(図11)

図11 settings_activity.xml

プリファレンスファイル「root_prefernce.xml」が自動的に生成されました。(図12)

図12 root_preferences.xml

 

文字配列リソースファイル「arrays.xml」が自動的に生成されました。(図13)

図13 arrays.xml

文字列リソースファイル「strings.xml」に「SettingsActivity」で使用される文字列に関する記述が自動的に追加されました。(図14)

図14 strings.xml

マニュフェストファイル「AndroidManifest.xml」に「SettingsActivity」に関する記述が自動的に追加されました。(図15)

図15 AndroidManifest.xml

図16 settingsActivity

 

ここまでで作成したプロジェクトを Android Studio のエミュレータで実行してみました。(図16)まだ EmptyActivity と同じに見えます。

プロジェクト全体は GitHub にアップロードしています。2_preference_SettingActivity

 

 

 

 

メニューリソースファイルの作成

プロジェクトペイン > app を右クリックするとメニューツリーが現れるので、
新規 > Android Rsource File を選択します。(図17)

図17 新規 > Android Rsource File

New Resource File 画面が現れるので File name に「options」と入力して、Resource type 「Menu」を選択して「OK」をクリックします。(図18)

図18 New Resource File

options.xml ファイルが自動的に生成されました。(図19)

図19 options.xml

options.xml ファイルの内容を水色で示すように書き換えます。(図20、図21)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_open_settings" android:title="予備" />
    <item android:id="@+id/menu_true_settings" android:title="設定" />
    <item android:id="@+id/menu_test_settings" android:title="テスト" />
</menu>
             図20 options.xml の内容を書換

図21 options.xml の内容を書換

図22 MenuResource

 

ここまでで作成したプロジェクトを Android Studio のエミュレータで実行してみました。(図22)まだ EmptyActivity と同じに見えます。

プロジェクト全体は GitHub にアップロードしています。3_preference_MenuResource

 

 

 

 

 

メインアクティビティクラスにメニュー関連関数を追加

MainActivity.java ファイルにメニュー関連の関数を次のように追加します。(図23、図24)
// オプションメニュー作成時の処理でメニューリソースファイル options.xml に関連づけます。
//オプションメニューのアイテム選択時の処理でアイテムが選択された時に実行する内容を記述します。ここでは SettingsActivity を開始します。

// オプションメニュー作成時の処理
@Override
public boolean onCreateOptionsMenu( Menu menu )
{
    getMenuInflater().inflate( R.menu.options, menu );
    return true;
}

// オプションメニューのアイテム選択時の処理
@Override
public boolean onOptionsItemSelected( MenuItem item )
{
    if( R.id.menuitem_settings == item.getItemId() )
    {
       Intent intent = new Intent( this, SettingsActivity.class );
       startActivity( intent );
       return true;
    }
    return false;
}
          図23 MainActivity.java にメニュー関連関数を追加

図24 MainActivity.java にメニュー関連関数を追加

ここまでで自動生成されたプロジェクトではアクションバーが表示されずメニューも選択できない状態だったので、以下の変更を行います。
res/values/themes.xml ファイルを開くと、style name  の末尾に「.NoActionBar」 の記述があります。(図25)

図25 res/values/themes.xml

「.NoActionBar」 を削除します。(図26)

図26 NoActionBar を削除

res/values-night/themes.xml ファイルにも、style name  の末尾に .NoActionBar の記述があります。(図27)

図27 res/values-night/themes.xml

.NoActionBar を削除します。(図28)

図28 .NoActionBar を削除

ついでに SettingsActivity 設定画面から MainActivity メイン画面に戻る「←」ボタンを追加しておきます。SettingsActivity.java に次の項目を追加します。(図29、図30)

@Override
//アクションバーの ← をタップすると MainActivity にもどる
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
       finish();
    }
    return super.onOptionsItemSelected(item);
}
      図29 SettingsActivity.java に戻る ← ボタン追加

図30 SettingsActivity.java に戻る ← ボタン追加

プロジェクト全体は GitHub にアップロードしています。
4_preference_LinkMenu

実行

ここで Android Studio のエミュレータを起動します。(図31)

図31 エミュレータ起動

エミュレータが立ち上がりました。(図32)

図32 エミュレータが立ち上がった

アクションバーのメニューをタップするとメニューが表示されます。(図33)
メニューのうち「設定」だけに動作を割り当てているので、「設定」をタップすると設定画面が開きます。(図34)
設定画面から文字入力やスイッチの選択を行うことで設定を変更します。(図35)

図33 メニュー表示

図34 設定画面

図35 設定入力後

 

 

 

 

 

 

 

 

ここで行った設定変更はアプリケーションを閉じても保持されているので、次にアプリケーションを開いた時にはその内容が復元されます。

【関連リンク】
設定アクティビティのカスタマイズ
Android Studio 設定画面の作り方からアクティビティで参照する方法まで(2)
MainActivity から設定内容を参照する方法
Android Studio 設定画面の作り方からアクティビティで参照する方法まで(3)

(YI)

コメント

error: Content is protected !!
タイトルとURLをコピーしました