アンドロイド:知識のSwitchPreference

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);
    }
}
公開された42元の記事 ウォン称賛24 ビュー60000 +

おすすめ

転載: blog.csdn.net/u010725171/article/details/102638388