Предпочтение Android - PullRequest
       1

Предпочтение Android

2 голосов
/ 05 апреля 2011

Я делаю резервное копирование и восстановление параметров в моем приложении для Android.Затем вы открываете предпочтение, я хочу кнопку для резервного копирования и кнопку для восстановления.Я делаю кнопку в своем файле xml / preference.xml следующим образом:

<PreferenceCategory android:title="Backup">
    <Preference
        android:key="backup"
        android:title="Backup"
        android:summary="Make a backup of shows"
    />
    <Preference
        android:key="restore"
        android:title="Restore"
        android:summary="Restore shows from backup"
    />
</PreferenceCategory>

В своем классе предпочтений я реализую OnSharedPreferenceChangeListener и добавляю getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); к onResume() и getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); к OnPause().

Я реализую onSharedPreferenceChanged:

  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
      // Let's do something when my counter preference value changes
      if (key.equals("backup")) {
          Toast.makeText(this, "Backup button pressed", Toast.LENGTH_SHORT).show();
      } else if (key.equals("restore")) {
          Toast.makeText(this, "Restore button pressed", Toast.LENGTH_SHORT).show();
      } 
  } 

Но тост не отображается, тогда я нажимаю одну из кнопок.Я отлично работаю на т.е. CheckBoxPreference, но мне нужна только кнопка, а не флажок.Кто-то, кто может помочь?

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011

Если это просто простая кнопка, то нет предпочтения, которое можно изменить, поэтому ваш onSharedPreferenceChanged не будет вызываться в этом случае.

Вместо этого используйте прослушиватель OnClick:

OnPreferenceClickListener btnListener = new OnPreferenceClickListener() {
    @Override
    public boolean onPreferenceClick(Preference preference) {
        final String key = preference.getKey();

        if (key.equals("backup")) {
            // show toast
            return true; // we handled the click
        }
        return false; // we didn't handle the click
    }
};

Preference prefBtn = findPreference("backup");
prefBtn.setOnPreferenceClickListener(btnListener);
2 голосов
/ 05 апреля 2011

поместите ваш код в метод

public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
                                         Preference preference);

.preference вот предпочтения, по которым щелкнули.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...