C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

アプリケーションをカスタマイズするための設定情報は, 以下を利用することで簡単に作成できる.
・Android 2.3(API Level 10)までは, プリファレンスアクティビティ(PreferenceActivity)
・Android 3.0(API Level 11)以降は, プリファレンスフラグメント(PreferenceFragment)
設定された設定情報は, 「/data/data/アプリケーションのパッケージ名/shared_prefs」の下に登録される.



設定画面

アプリケーションの設定情報はXMLで定義する.
ソースコードでも定義可能であるが, ここでは省略する.
  • res/xml/pref.xml
設定画面をXMLで定義する.
    • res/xml/pref.xmlを新規に作成し, PreferenceScreen要素からなる設定情報の定義を記述する.
    • PreferenceCategory要素は, 設定項目の分類を表し, 各設定項目の属性定義をここに記述する.
    • CheckBoxPreference要素は, チェックボックスによる設定の定義を記述する.
    • EditTextPreference要素は, エディットテキストによる設定の定義を記述する.
    • ListPreference要素は, リストによる設定の定義を記述する. リストに表示する内容については, arrays.xml内で定義する.
    • RingtonePreferece要素は, 着信音の設定の定義を記述する.
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android">
  <PreferenceCategory android:title="@string/title">
    <!-- チェックボックスによる設定 -->
    <CheckBoxPreference
      android:key="checkbox_key"
      android:title="@string/checkbox_title"
      android:summary="@string/checkbox_summary"
      />
    <!-- エディットテキストによる設定 -->
    <EditTextPreference
      android:key="edittext_key"
      android:title="@string/edittext_title"
      android:summary="@string/edittext_summary"
      />
    <!-- リストによる設定 -->
    <ListPreference
      android:key="list_key"
      android:title="@string/list_title"
      android:summary="@string/list_summary"
      android:entries="@array/list_entries"
      android:entryValues="@array/list_entryvalues"
      />
    <!-- 着信音の設定 -->
    <RingtonePreference
      android:key="ringtone_key"
      android:title="@string/ringtone_title"
      android:summary="@string/ringtone_summary"
      android:showDefault="true"
      />
  </PreferenceCategory>
</PreferenceScreen>
  • res/values/arrays.xml
リストに表示する内容及び選択されたときの値をstring-arrayで定義する.
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string-array name="list_entries">
    <item>Item 1</item>
    <item>Item 2</item>
    <item>Item 3</item>
  </string-array>
  <string-array name="list_entryvalues">
    <item>1</item>
    <item>2</item>
    <item>3</item>
  </string-array>
</resources>
PreferenceFragment (API Level 11)
  • PrefFragment.java
    • PreferenceFragmentクラスを継承する.
    • PreferemceFragment#addPreferencesFromResourceメソッドで, 設定画面のXMLファイルを指定する.
package com.moonlight_aska.android.preference01;

import android.os.Bundle;
import android.preference.PreferenceFragment;

public class PrefFragment extends PreferenceFragment {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.pref);
  }
}
  • Preference01.java
    • 画面のルートに当たるandroid.R.id.contentに直接PreferenceFragmentを設定する.
package com.moonlight_aska.android.preference01;

import android.app.Activity;
import android.os.Bundle;

public class Preference01 extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefFragment()).commit();
  }
}
PreferenceActivity (API Level 1)
  • Preference01.java
    • アクティビティは, PreferenceActivityクラスを継承する.
    • PreferenceActivity#addPreferencesFromResourceメソッドで, 設定画面のXMLファイルを指定する.
package com.moonlight_aska.android.preference01;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class Preference01 extends PreferenceActivity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.pref);
  }
}

1) チェックボックスによる設定を行う.


2) エディットテキストによる設定を行う.


3) リストによる設定を行う.


4) 着信音の設定を行う.




コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



管理人/副管理人のみ編集できます