Переход от PreferenceScreen к DialogPreference - PullRequest
4 голосов
/ 29 января 2010

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

Я попытался сделать это с намерением, но приложение закрылось с этой ошибкой msg:

E / AndroidRuntime (239): android.content.ActivityNotFoundException: Невозможно найти явный класс активности {Com.xxxx / com.xxxx.xxxxPreference}; Вы объявили эту деятельность в ваш AndroidManifest.xml?

Как мне это сделать? Можно ли добавить эту DialogPreference к манифесту?

Ответы [ 2 ]

4 голосов
/ 01 февраля 2010

A DialogPreference не является Activity само по себе.Это просто Preference, который отображает Dialog при нажатии.

Проблема в том, что нет очевидного способа программно щелкнуть Preference.Однако, поскольку вы используете DialogPreference, у вас уже есть собственный подкласс.Таким образом, мы можем решить нашу проблему, добавив следующий метод к вашему подклассу DialogPreference:

//Expose the protected onClick method
void show() {
    onClick();
}

Тогда в onCreate() вашего PreferencesActivity у вас будет что-то подобное для загрузки предпочтенийиз вашего XML-файла:

// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);

После этого вы можете добавить код наподобие этого:

booleanProp = true; //set this to the value of the property you're checking     

if (! booleanProp) {
    //Find the Preference via its android:key
    //MyDialogPreference is your subclasss of DialogPreference
    MyDialogPreference dp = (MyDialogPreference)getPreferenceScreen().findPreference("dialog_preference");  
    dp.show();
}

Это немного взломано, так как использование методов protected не идеально, но это работает.

Другой вариант - заменить Dialog на PrefenceActivity, который содержит все параметры, которые вы хотите сохранить, и затем вы можете запустить его через Intent, но яЯ предполагаю, что есть веская причина, по которой вы хотите свой собственный Dialog с определенной раскладкой.Если вам нужен второй PreferenceActivity, вы можете добавить его в свой XML-файл настроек следующим образом:

<PreferenceScreen
        android:title="@string/title_of_preference"
        android:summary="@string/summary_of_preference">
    <intent android:action="your.action.goes.HERE"/>
</PreferenceScreen>
0 голосов
/ 29 января 2010

Чтобы начать действие с намерением, оно должно быть в манифесте Android. Просто добавьте строку вроде:

<activity android:name=".path.to.MyActivity"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...