SwitchPreference CheckBoxPreferenceはTwoStatePreferenceから継承された2つの異なる状態を、表示するために使用されるアップグレード版、です。多くの場合、システムで使用されるような設定などのアプリケーションが付属しています。
SwitchPreferenceプロパティ:
アンドロイド:キー:各優先コントロールユニークな「ID」、この好みのユニークな表現。
アンドロイド:はdefaultValue:デフォルト値。例えば、デフォルト値は「真の」CheckPreferenceであってもよいし、デフォルトで選択され; EditTextPreferenceデフォルト値は「110」であってもよいです
アンドロイド:有効:状態の好みが利用可能であることを示します。
アンドロイド:タイトル:各タイトルの優先レイアウトPreferenceScreenに表示-タイトル
アンドロイド:要約:各タイトルの優先レイアウトPreferenceScreenに表示-字幕(できない)
アンドロイド:永続:嗜好要素が対応を表しますsharedPreferen値は、それが本当であるならば、それはその書き込みを意味し、ファイルに書き込まれ、そうでない場合、彼らは好みの要素の値を書いていないと述べました。
アンドロイド:依存:プリファレンス(Aで示す)に使用可能な状態を示しているが(Bによって表される)別の好みに依存しています。Bは、利用可能なA、入手可能である; Bが利用できない場合、Aは利用できません。
アンドロイド:disableDependentsState:アンドロイド:逆依存関係。Bは、利用可能、使用不能Aであり; Bが利用できない場合、Aが利用可能です。
イベントに関連する3つのメソッドをクリックしてください:
onPreferenceClick、onPreferenceTreeClick、onPreferenceChange差との関係
さまざまな方法を使用します
preference.setOnPreferenceClickListener-onPreferenceClick
onPreferenceChange-preference.setOnPreferenceChangeListener
onPreferenceTreeClick PreferenceActivityは、処理ロジック自身の複製により必要とされ得る、方法です。
3との間の関係
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference prefer)
返回值:
true:点击事件已成功捕捉,无须执行默认动作或返回上层调用链。
false:执行默认动作并且返回上层调用链。
在继承PreferenceActivity的Activity可以重写该方法,来完成对Preference事件的捕捉。
public boolean onPreferenceChange(Preference preference,Object objValue)
说明:当Preference的元素值改变时,触发该事件。
返回值:
true:将新值写入sharedPreference文件中,checkbox的状态会变化。
false:不将新值写入sharedPreference文件,checkbox的状态不变。
public boolean onPreferenceClick(Preference preference)
说明:当点击控件时触发发生,可以做相应操作。
返回值:
true:不再调用onPreferenceTreeClick方法。
false:继续调用onPreferenceTreeClick方法。
注意事項:
onPreferenceChangeの方法は、他の2つの方法とは独立して実行します。つまり、それは常に動作します。
コントロールがクリックされたか、優先値が変更された場合、トリガー方法は、それを実装する方法ですか?
あなたは好みのコントロールをクリックすると、最初のonPreferenceChangeコールバックメソッドは、値を保存するかどうか、戻り値onPreferenceChangeチェックボックスに基づいて状態を切り替えるために、その後、コールバックがonPreferenceClick、onPreferenceTreeClickの戻り値が決定するかどうかを判断するためでしょうか、コールバックonPreferenceTreeClickに応じて、onPreferenceClick方法とonPreferenceTreeClickで得られた制御値は、最新の優先制御値です。
次のコードは、呼び出し手順を視覚的に表現しています
TwoStatePreference.java
@Override
protected void onClick() {
super.onClick();
final boolean newValue = !isChecked();
if (callChangeListener(newValue)) {
setChecked(newValue);
}
}
callChangeListener在基类Preference.java中:
protected boolean callChangeListener(Object newValue) {
return mOnChangeListener == null || mOnChangeListener.onPreferenceChange(this, newValue);
}
Preference.java里面点击事件的重要方法:performClick
public void performClick(PreferenceScreen preferenceScreen) {
if (!isEnabled()) {
return;
}
onClick();
if (mOnClickListener != null && mOnClickListener.onPreferenceClick(this)) {
return;
}
PreferenceManager preferenceManager = getPreferenceManager();
if (preferenceManager != null) {
PreferenceManager.OnPreferenceTreeClickListener listener = preferenceManager
.getOnPreferenceTreeClickListener();
if (preferenceScreen != null && listener != null
&& listener.onPreferenceTreeClick(preferenceScreen, this)) {
return;
}
}
if (mIntent != null) {
Context context = getContext();
context.startActivity(mIntent);
}
}