1

2部構成の設定画面を実装したい。チェックボックスをクリックすると、最初のカテゴリがロックされ、2 番目のカテゴリがロック解除されます。そうでない場合は、逆にします。以前のアクティビティに移動してから新しい (sharedPreferences) に移動した場合にのみ機能することがわかりました。どのリスナーをどのようにオーバーライドする必要がありますか?

4

2 に答える 2

7

次のようなものを試すことができます:

final Preference otherpref = (Preference) findPreference("otherpref"); 
final Preference pref = (Preference) findPreference("checkbox");        
pPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {

    public boolean onPreferenceClick(Preference preference) {
        otherPref.setSelectable(false);
        Toast.makeText(getBaseContext(), "Some text", Toast.LENGTH_SHORT).show();
        return true; 
    }
});

目的のカテゴリを無効にします。

于 2011-02-18T18:42:14.507 に答える
1

PreferenceActivity を拡張し、OnSharedPreferenceChangeListener を実装するクラスとして、設定アクティビティを実装しました。

public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    Context context = getApplicationContext();
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
    settings.registerOnSharedPreferenceChangeListener(this);
  }

  @Override
  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    // Check the checkboxes
  }
}
于 2011-02-18T18:50:07.917 に答える