うみたんのアトリエ

Android開発とかメモっておきたいこと記録していくの。

ListPreferenceで選択した値を取得

次にリストから選んだものを読み込む方法。
 
PreferenceActivity継承クラスにOnPreferenceChangeListenerをインポートする。
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
public class MenuList extends PreferenceActivity implements
  OnPreferenceChangeListener {
 private ListPreference list;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  addPreferencesFromResource(R.xml.preference);
  // Preferenceの取得
  list = (ListPreference) findPreference("list"); //"list"はListPreferenceのandroid:key
  // リスナーを設定する
  list.setOnPreferenceChangeListener(this);
  // 保存されたデータを読み込む
  SharedPreferences p = PreferenceManager
    .getDefaultSharedPreferences(this);
  // 値の取得
  String param_list = p.getString("list", "Unselected");
  list.setDefaultValue(param_list);
  
  setSummary(list, param_list);
 }
 @Override
 public boolean onPreferenceChange(Preference preference, Object newValue) {
  if (newValue != null) {
   if (newValue instanceof String) {
    if (preference instanceof ListPreference) {
     setSummary((ListPreference) preference, (String) newValue);
    }
   }
   return true;
  }
  return false;
 }
 public void setSummary(ListPreference lp, String param) {
  if (param == null) {
   lp.setSummary("Unselected");
  } else {
   lp.setSummary("Selected「" + param + "」");
  }
  param = null;
 }
}
 
イメージ 1