Можно ли отобразить DialogPreference без отображения PreferenceScreen? - PullRequest
2 голосов
/ 21 июня 2010

Я сейчас пишу живые обои для Android, и у него есть PreferenceScreen, который в настоящее время содержит только одно предпочтение - DialogPreference для установки различных свойств анимации.

Рабочий процесс пользователя для его настройки в настоящее время выглядит следующим образом: Настройки ... => (показывает список настроек только с одним заголовком) Скорость анимации => MyDialogPreference

То, что я хочу, это сделать рабочий процесс следующим образом: Настройки ... => MyDialogPreference

т.е. Я ищу способ пропустить показ этого списка предпочтений только с одним элементом и сразу показать это диалоговое окно.

Но, похоже, PreferenceActivity запрашивает у себя PreferenceScreen в качестве корневого элемента иерархии предпочтений. Итак ... возможно ли вообще делать то, что я хочу? :)

Код ссылки:

Код активности:

public class ForestLakePreferences extends PreferenceActivity
{
    protected void onCreate(Bundle savedState)
    {
        super.onCreate(savedState);
        getPreferenceManager().setSharedPreferencesName(
                ForestLakeWallpaper.PREFS_NAME);
        addPreferencesFromResource(R.xml.preferences);
    }
}

Prefs ресурс:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:key="lake_preferences">
    <DurationEditDialog
            android:title="@string/prefs_duration_title"
            android:dialogTitle="@string/configure_durations_dlg_title"
            android:dialogLayout="@xml/set_durations_layout" />
</PreferenceScreen>

Ответы [ 2 ]

1 голос
/ 24 июля 2010

Оказалось, что это не может быть сделано таким образом.

Но я нашел обходной путь: я сделал свою деятельность не PreferencesActivity, а пользовательскую и сделал ее похожей на диалог, разместивв AndroidManifest.xml

<activity android:theme="@android:style/Theme.Dialog" .... />
0 голосов
/ 21 июня 2010

DialogPreference имеет метод showDialog (состояние пакета), попробуйте вызвать его.Я не уверен, что вам придется дать ему что-то еще, например, Настройки или что-то еще.

...