2016-06-14 20 views
-1

各環境設定でリスナーを設定するのではなく、チェックボックス、編集テキスト、リストの環境設定、これらの項目のonPreferenceClickListenerを一度に設定する方法など複数の環境設定がある場合。最新のデバイス(> 4.0)をサポートする必要があります。複数の環境設定のsetOnPreferenceClickListener

他のカテゴリの下に10の設定があり、すべての設定でリスナーを設定する必要がある場合は、すべての設定を別々に見つけてそのコードを書きたくない場合があります。いくつかのループを使用して、すべての環境設定を一度に取得します。リスナーを1つしか書き込めず、スイッチケースを使用する方法はありますか?

答えて

0

古いファッションの好みのスタイル(addPreferencesFromResource()を使用している)を使用している場合は、onPreferenceTreeClick()の機能を上書きできます。

モダンフラグメントベースの設定を使用している場合は、onPreferenceStartFragment()を上書きする必要があります。私はまだこのソリューションをテストしていませんが、ドキュメントによると、これはあなたが探しているものです。

どちらの関数も引数として渡すことができます。設定オブジェクトでは、設定キーを見つけることができます。最初のオプションは私のために働いていましたが、私は昔ながらの男です。

EDIT

フラグメントベースのアクティビティを使用して:あなたは、すべてのアイテムにリスナーをクリックし設定する必要はありません。 PreferenceFragmentクラスのonPreferenceTreeClick()をオーバーライドするだけです。ここに例があります。

public static class GeneralPreferenceFragment extends PreferenceFragment { 
    @Override 
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { 
     switch (preference.getKey()){ 
       case "key_1": 
        //Do your stuff 
        break; 
     } 
     return super.onPreferenceTreeClick(preferenceScreen, preference); 
    } 
} 
+0

ありがとうございます! @ user1557434私はフラグメントベースの好みを使用しています。または、私は環境設定でsetOnPreferenceClickListenerを行うことができる他の方法がありますか? – akm

+0

答えを更新しました。 – user1557434