У меня та же проблема, и я столкнулся с тем же исключением, упомянутым выше. После изучения источника Android кажется, что это происходит со всеми предпочтениями, которые хотят создать диалоговое окно или новое окно. Кажется, это создается как APPLICATION_WINDOW, что не так.
В документах к AbstractAccountAuthenticator в примере используется намерение при нажатии.
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/title_fmt" />
<PreferenceScreen
android:key="key1"
android:title="@string/key1_action"
android:summary="@string/key1_summary">
<intent
android:action="key1.ACTION"
android:targetPackage="key1.package"
android:targetClass="key1.class" />
</PreferenceScreen>
Я думаю, что намерение состоит в том, чтобы запустить новое действие предпочтения из настроек аккаунта и не использовать их на месте. Плохо то, что это позволяет всплыть новое исключение:
10-01 09:33:36.935: ERROR/AndroidRuntime(52): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Большой вопрос, как дать намерение флагу? Я не видел способа установить флаги намерений с помощью XML. Я уже создал свое собственное предпочтение и запускаю намерение во время onClick (). Но похоже, что настройки учетной записи запускаются в контексте настроек учетной записи и синхронизации, и загрузчик классов не может найти мой класс.
Я вижу здесь два решения:
- Установите флажки для намерения.
- Настройка подкласса и обработка onClick () для запуска вашей деятельности. Но как опубликовать свой класс?