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>