Как создать пользовательскую настройку, которая использует существующее действие, которое возвращает результат? - PullRequest
0 голосов
/ 06 декабря 2010

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

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

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

1 Ответ

2 голосов
/ 06 декабря 2010

Я также заметил, что 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();
}
...