サンプル集  >  Android  >  設定画面
設定画面
2014/04/28

PreferenceFragmentを使って設定画面を作ります。 Android API Level 11以降は、PreferenceAcrivityではなくPreferenceFragmentを使います。

◆環境
OS Windows 7 Professional Service Pack 1 64bit
eclipse 4.2.2
Android 4.4
Android端末 Nexus7

@eclipseで[File]-[New]-[Project]を選択します。

ANew Projectウィンドウが開いたら[Android]-[Android Application Project]を選択し「Next」ボタンを押します。

BNew Android Applicationウィンドウが開いたら「Aplication Name」に SettingTest と入力し、 Minimum Required SDKは「API 11: Android 3.0 (Honeycomb)」を選択し、「Next」ボタンを押します。

CConfigure Projectウィンドウが開いたらそのまま「Next」ボタンを押します。

DConfigure the attributes of the icon setウィンドウが開いたらそのまま「Next」ボタンを押します。

ECreate Activityウィンドウが開いたらそのまま「Next」ボタンを押します。

FBlank Activityウィンドウが開いたらそのまま「Finish」ボタンを押します。

設定項目を書くためのXMLファイルを追加します。

@プロジェクト名を右クリックし、[New]-[Ohter...]を選択します。

A[Android]-[Android XML File]を選択し[Next]を押します。

Resource TypeをPreferenceに、Fileにmypreferenceと入力し、Root ElementはPreferenceScreenを選択し[Finish]を押します。

追加したXMLを編集します。

PreferenceScreenを選択し[Add]ボタンを押します。

EditTextPreferenceを選択し[OK]ボタンを押します。

EditTextPreferenceを選択しAttributes from Preferenceを開き、Key、Type、Summaryを入力します。

同じ手順でphone(電話番号)も追加しました。

PreferenceFragmentから派生するクラスMyPrefsを追加し、onCreateで読み込むようにします。

MainActivity.java
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
package com.example.settingtest;

import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.view.Menu;

public class MainActivity extends Activity
{
    @Override
    protected void onCreate( Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );
//        setContentView(R.layout.activity_main);

        FragmentTransaction tran
        = getFragmentManager().beginTransaction();

        tran = tran.replace( android.R.id.content
                           , new MyPrefs()
                           );

        tran.commit();
    }

    @Override
    public boolean onCreateOptionsMenu( Menu menu )
    {
        getMenuInflater().inflate( R.menu.main, menu );
        return true;
    }

    public static class MyPrefs extends PreferenceFragment
    {
        @Override
        public void onCreate( Bundle savedInstanceState )
        {
            super.onCreate( savedInstanceState );
            addPreferencesFromResource( R.xml.mypreference );
        }
    }
}

実行します。

xmlで指定した項目が表示されました。 氏名をタップしてみます。

入力ダイアログが開きました。 Preference Testと入力し[OK]を押します。

再度、氏名をタップして開くと入力した内容が表示されました。

入力した内容はxml形式でshared_prefs配下に保存されていました。

>adb shell
shell@android:/ $ run-as com.example.settingtest
run-as com.example.settingtest
shell@android:/data/data/com.example.settingtest $ cd shared_prefs
cd shared_prefs
shell@android:/data/data/com.example.settingtest/shared_prefs $ cat com
.example.settingtest_preferences.xml
.example.settingtest_preferences.xml <
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="phone"></string>
<string name="name">Preference test</string>
</map>

Fragment

Android 3.0から導入され、4.0からスマートフォンでも利用できるようになったようです。

Fragment導入前は、Activityの上にLayoutやViewなどの部品を配置していました。 Fragmet導入後はActivityの上にFragmentを配置し、その上にLayoutやViewなどの部品を配置するようになったようです。

▲ PageTop  ■ Home


Copyright (C) 2014 ymlib.com