「Android/Preference設定方法」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→Categoryを使う方法) |
|||
| (同じ利用者による、間の10版が非表示) | |||
| 行16: | 行16: | ||
</PreferenceScreen> | </PreferenceScreen> | ||
| − | *src/info/nonip/ | + | *src/info/nonip/android/SamplePreference.java |
public class SamplePreference extends PreferenceActivity { | public class SamplePreference extends PreferenceActivity { | ||
@Override | @Override | ||
| 行93: | 行93: | ||
// スクリーンの場合 | // スクリーンの場合 | ||
preferenceScreen.removePreference((PreferenceScreen) getPreferenceScreen().findPreference("screen_test_key")); | preferenceScreen.removePreference((PreferenceScreen) getPreferenceScreen().findPreference("screen_test_key")); | ||
| + | |||
| + | ==PreferenceScreenをonClickしたい場合== | ||
| + | <pre> | ||
| + | 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; | ||
| + | } | ||
| + | }); | ||
| + | </pre> | ||
| + | |||
| + | ==EditTextPreferenceの使い方== | ||
| + | レイアウト | ||
| + | <pre> | ||
| + | <EditTextPreference | ||
| + | android:key="id" | ||
| + | android:title="Input id" | ||
| + | android:summary="YOUR_SSP_APP_ID" | ||
| + | /> | ||
| + | </pre> | ||
| + | コード | ||
| + | <pre> | ||
| + | EditTextPreference idPref = (EditTextPreference)findPreference( "id" ); | ||
| + | idPref.setSummary(idPref.getText()); | ||
| + | idPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { | ||
| + | @Override | ||
| + | public boolean onPreferenceClick(Preference preference) { | ||
| + | EditTextPreference editPref = (EditTextPreference)preference; | ||
| + | if (editPref.getText() != null) { | ||
| + | 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> | ||
| + | |||
| + | ==Categoryを使う方法== | ||
| + | <pre> | ||
| + | <PreferenceCategory android:title="hogecate" > | ||
| + | <PreferenceScreen android:key="hoge" | ||
| + | android:title="Hoge" /> | ||
| + | </PreferenceCategory> | ||
| + | </pre> | ||
2020年1月8日 (水) 14:27時点における最新版
目次
リスト文字列取得サンプル
- 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/android/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.setSummary(idPref.getText());
idPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
EditTextPreference editPref = (EditTextPreference)preference;
if (editPref.getText() != null) {
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>
