Как использовать два диалога в пределах одного выбора предпочтений - PullRequest
0 голосов
/ 02 октября 2011

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

Это мой единственный вариант для создания обработчика пользовательских предпочтений?Могу ли я зафиксировать первоначальное изменение предпочтений списка и затем представить обработчик для аудио?

1 Ответ

0 голосов
/ 09 октября 2011

Вот мое решение. Я расширил ListPreference своим собственным классом. Когда диалоговое окно закрыто, я вызываю программу выбора для списка аудио. Когда выбор завершается, вызывается пользовательский родительский PreferenceActivity.

Соответствующие биты кода:

public class AlertBehaviorPreference extends ListPreference {
...
    public void onDialogClosed(boolean positiveResult)
    {
        super.onDialogClosed(positiveResult);
        if(positiveResult)
        {
            String s = this.getValue();
            if(s != null && s.equals(SONG_ALARM_ACTION)) // play song
            {
                // Get the parent activity.  
                // This activity will be notified when the audio has been selected
                PreferenceActivity pActivity = (PreferenceActivity)this.getContext();

                // Select a recording
                Intent i = new Intent(pActivity, pActivity.getClass());           
                i.setAction(Intent.ACTION_GET_CONTENT);
                i.setType("audio/*");
                pActivity.startActivityForResult(Intent.createChooser(i, "Select song"), 1);

                Log.d(TAG, "Started audio activity chooser");
            }

public class MyPreferenceActivity extends PreferenceActivity {
...
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Call back into the preference to save data
        // Where the result can be validated and settings can be
        // be reset if the user cancelled the request.
        ((AlertBehaviorPreference)(findPreference("alertBehaviorPreference"))).onSongActivitySelectionComplete(data);
    }
...