「Android/Preference設定方法」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→EditTextPreferenceの使い方) |
(→EditTextPreferenceの使い方) |
||
行110: | 行110: | ||
レイアウト | レイアウト | ||
<pre> | <pre> | ||
− | + | <EditTextPreference | |
− | + | android:key="id" | |
− | + | android:title="Input id" | |
− | + | android:summary="YOUR_SSP_APP_ID" | |
− | + | /> | |
</pre> | </pre> | ||
コード | コード | ||
<pre> | <pre> | ||
− | + | EditTextPreference idPref = (EditTextPreference)findPreference( "id" ); | |
− | + | idPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { | |
− | + | @Override | |
− | + | public boolean onPreferenceClick(Preference preference) { | |
− | + | EditTextPreference editPref = (EditTextPreference)preference; | |
− | + | editPref.getEditText().setSelection(editPref.getText().length()); | |
− | + | return true; | |
− | + | } | |
− | + | }); | |
− | + | idPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { | |
− | + | @Override | |
− | + | public boolean onPreferenceChange(Preference preference, | |
− | + | Object newValue) { | |
− | + | EditTextPreference editPref = (EditTextPreference)preference; | |
− | + | //editPref.getEditText().setSelection(editPref.getText().length()); | |
− | + | editPref.setSummary(newValue.toString()); | |
− | + | return true; | |
− | + | } | |
− | + | }); | |
</pre> | </pre> | ||
2018年12月6日 (木) 18:03時点における版
目次
リスト文字列取得サンプル
- res/xml/pref.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="設定" > <ListPreference android:key="list_key" android:title="@string/list_title" android:summary="@string/list_summary" android:dialogTitle="@string/list_dialogtitle" android:entries="@array/list_entries" android:entryValues="@array/list_entryvalues" /> </PreferenceScreen>
- src/info/nonip/andoird/SamplePreference.java
public class SamplePreference extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref); // プリファレンス取得 ListPreference listPreference = (ListPreference)getPreferenceScreen().findPreference("list_key"); listPreference.getValue(); } }
- res/value/arrays.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="list_entries"> <item>2</item> <item>3</item> <item>4</item> </string-array> </resources>
PreferenceActivity以外で取得したい場合はこのようにして取得する
以下2つは完全に同じ意味どちらでもOK
1
// 共通プリファレンス取得 SharedPreferences mSp = getSharedPreferences(getPackageName(), Activity.MODE_PRIVATE); // 文字列取得 String value = mSp.getString("list_key", "unknown");
2
// 共通プリファレンス取得 SharedPreferences mSp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); // 文字列取得 String value = mSp.getString("list_key", "unknown");
値設定
listPreference.setValue("hoge");
タイトル設定
listPreference.setValue("hogetitle");
サマリー設定
listPreference.setSummary("hogesummary");
日本語リストをサマリへ設定
- entryvaluesを使ってentries側を取得したい場合など
// リスト1プリファレンス取得 ListPreference listPreference = (ListPreference)getPreferenceScreen().findPreference("list1); // 全角設定値をサマリに入れる listPreference.setSummary(listPreference.getEntry()); // 変更イベント public boolean onPreferenceChange(Preference preference, Object newValue) { // listへキャスト ListPreference listPreference = (ListPreference)preference; // listid取得 int listId = listPreference.findIndexOfValue((String) newValue); // 全list取得 CharSequence[] entries = listPreference.getEntries(); // サマリへ値格納 preference.setSummary(entries[listId]); return true; }
preferenceを非表示にする方法
- preference.xml
<PreferenceCategory android:key="category_test_key" > <PreferenceScreen android:key="display_test_key" /> </PreferenceCategory>
- SettingActivity.java
PreferenceScreen preferenceScreen = getPreferenceScreen(); // カテゴリの場合 preferenceScreen.removePreference((PreferenceCategory) getPreferenceScreen().findPreference("category_test_key")); // スクリーンの場合 preferenceScreen.removePreference((PreferenceScreen) getPreferenceScreen().findPreference("screen_test_key"));
PreferenceScreenをonClickしたい場合
PreferenceScreen preference = (PreferenceScreen)getPreferenceScreen().findPreference("key1"); preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { // ここに処理 Intent intent = new Intent(getApplicationContext(), SampleActivity.class); startActivity(intent); return true; } });
EditTextPreferenceの使い方
レイアウト
<EditTextPreference android:key="id" android:title="Input id" android:summary="YOUR_SSP_APP_ID" />
コード
EditTextPreference idPref = (EditTextPreference)findPreference( "id" ); idPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { EditTextPreference editPref = (EditTextPreference)preference; editPref.getEditText().setSelection(editPref.getText().length()); return true; } }); idPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { EditTextPreference editPref = (EditTextPreference)preference; //editPref.getEditText().setSelection(editPref.getText().length()); editPref.setSummary(newValue.toString()); return true; } });
Categoryを使う方法
<PreferenceCategory android:title="hogecate" > <PreferenceScreen android:key="hoge" android:title="Hoge" /> </PreferenceCategory>