Androidの簡単な応用(一)——PreferenceFragment実現応用の設定
13881 ワード
今日は主にPreferenceFragmentの使い方を説明します.PreferenceFragmentデフォルトのSharedPreferencesファイルに接続されており、SharedPreferencesを操作するために自分でコードを書く必要はありません.これが最大の用途です.
一、クラス
fragmentを保存するためのプライマリActivity.
PreferenceFragmentです.
一つのsettings.xmlには設定した変数が格納されます.
二、具体コード
Activityのコードは次のとおりです.
注意:SharedPreferencesはWeakHashMapで傍受を維持しています.これは、現在の範囲を離れると回収の目標になるため、匿名の内部クラスをリスナーとして使用できないことを意味します.最初に動作しますが、最終的には回収され、WeakHashMapから除去され、動作を停止します.クラスの1つの場所でリスナーを参照すると、クラスのインスタンスを提供しても破棄されません.
PreferenceFragmentコードは次のとおりです.
settings.xmlファイル
このうちandroid:keyは、SharedPreferencesのkeyに対応しています.
arrays.xmlの値:
一、クラス
fragmentを保存するためのプライマリActivity.
PreferenceFragmentです.
一つのsettings.xmlには設定した変数が格納されます.
二、具体コード
Activityのコードは次のとおりです.
public class MainActivity extends Activity{
private SharedPreferences sp;
private OnSharedPreferenceChangeListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new ConfigFragment()).commit();// Fragment。
sp = PreferenceManager.getDefaultSharedPreferences(this);// ,
Log.d("CPACM",sp.getBoolean("autoBack", false)+ sp.getString("et1", "cpacm"));
listener = new OnSharedPreferenceChangeListener(){//SharedPreferences
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
Log.d("CPACM","change");
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, key, Toast.LENGTH_LONG).show();// SharedPreferences , toast.
}
};
sp.registerOnSharedPreferenceChangeListener(listener);
}
}
注意:SharedPreferencesはWeakHashMapで傍受を維持しています.これは、現在の範囲を離れると回収の目標になるため、匿名の内部クラスをリスナーとして使用できないことを意味します.最初に動作しますが、最終的には回収され、WeakHashMapから除去され、動作を停止します.クラスの1つの場所でリスナーを参照すると、クラスのインスタンスを提供しても破棄されません.
PreferenceFragmentコードは次のとおりです.
public class ConfigFragment extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);// ,
}
}
settings.xmlファイル
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:defaultValue="true"
android:key="autoBack"
android:summaryOff=" "
android:summaryOn=" "
android:title=" " />
<PreferenceCategory android:title="SMS " >
<CheckBoxPreference
android:defaultValue="false"
android:key="smsSilence"
android:summaryOff=" "
android:summaryOn=" "
android:title=" " />
<PreferenceScreen android:title=" " >
<CheckBoxPreference
android:defaultValue="true"
android:key="cb21"
android:summaryOff=" "
android:summaryOn=" "
android:title=" 1" />
<CheckBoxPreference
android:defaultValue="true"
android:key="cb22"
android:summaryOff=" "
android:summaryOn=" "
android:title=" 2" />
<ListPreference
android:dialogTitle=" "
android:entries="@array/entries_list_preference"
android:entryValues="@array/entriesvalue_list_preference"
android:key="list1"
android:summary=" "
android:title="android forum" />
<EditTextPreference
android:defaultValue="Hello EditTextPreference"
android:dialogTitle=" "
android:key="et1"
android:summary=" "
android:title="EditTextPreference Sample" />
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title=" " >
<RingtonePreference
android:key="rt1"
android:summary=" "
android:title="RingtonePreference Sample" />
</PreferenceCategory>
</PreferenceScreen>
このうちandroid:keyは、SharedPreferencesのkeyに対応しています.
arrays.xmlの値:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="entries_list_preference">
<item>www.anddev.org</item>
<item>www.eoeandroid.com</item>
<item>developer.android.com</item>
</string-array>
<string-array name="entriesvalue_list_preference">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
</resources>