Как создать пользовательскую настройку, использующую существующее действие, которое возвращает результат?

Класс Preference позволяет установить намерение, чтобы предпочтение активировало другое действие при нажатии, но я не могу найти способ обработать результат действия с помощью этого метода. Также есть DialogPreference, где я могу предоставить собственное представление, но у меня нет прямого доступа к представлению, которое я хочу использовать, только действие.

Копнув немного дальше, похоже, что RingtonePreference использует несколько внутренних методов пакета в PreferenceManager для получения результатов от запущенного поддействия, но, поскольку они являются внутренними для пакета, я не могу сделать то же самое.

Есть ли другой способ обработки пользовательского предпочтения с помощью действия, которое возвращает результат (где результат должен быть сохранен как значение предпочтения)?


person SoftMemes    schedule 05.12.2010    source источник


Ответы (1)


Я также заметил, что PreferenceActivity не возвращает onActivityResult. При этом есть ли причина, по которой ваша SubActivity не может напрямую сохранить предпочтение? Если вам нужно проверить его значение, вы можете проверить его в onResume вашей PreferenceActivity в качестве обходного пути.

//SubActivity onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button btn = (Button) findViewById(R.id.Button01);
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            SharedPreferences prefs = getSharedPreferences(TestPreferenceActivity.PREFS_FILE, MODE_WORLD_READABLE);
            prefs.edit().putString("mykey", "someValue").commit();
            finish();
        }});
}

//PreferenceActivity onResume
@Override
protected void onResume() {
    Log.d(TAG, "Preferences Resumed");
    //Check for new Preference Values
    SharedPreferences prefs = getSharedPreferences(PREFS_FILE, MODE_WORLD_READABLE);
    String value = prefs.getString("mykey", "defValue");
    Log.d(TAG, "Current value is: " + value);
    super.onResume();
}
person Tim H    schedule 05.12.2010
comment
В идеале я хотел бы иметь возможность повторно использовать действие для выбора устройства Bluetooth и использовать его результат в качестве значения предпочтения. Я также хотел бы иметь повторно используемую настройку, которую можно было бы использовать для одного или нескольких настроенных устройств Bluetooth из XML без необходимости изменять PreferenceActivity хостинга. Самое близкое, что я могу получить к этому в настоящее время, это иметь предпочтение, которое запускает действие, которое запускает другое действие и сохраняет его результат в предпочтениях после его завершения, но было бы неплохо вообще избежать этого дополнительного действия. - person SoftMemes; 06.12.2010