2010-12-05 3 views
0

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

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

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

ответ

2

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

В идеале я хотел бы иметь возможность повторно использовать активность для выбора устройства Bluetooth и использовать его результат в качестве значения предпочтения. Я также хотел бы иметь возможность повторного использования, которая может быть использована для одного или нескольких настроенных устройств Bluetooth из XML без необходимости изменения хостинга PreferenceActivity. Самое близкое, что я могу получить к этому в настоящее время, имеет предпочтение, которое запускает действие, которое запускает другое действие, и сохраняет его результат в соответствии с предпочтениями, когда оно завершается, но было бы неплохо избежать этого дополнительного действия alltogether. – SoftMemes 2010-12-06 14:31:42

Смежные вопросы