2010-09-16 55 views
5

我是android開發新手。PreferenceScreen - <intent .../> - 例外 - FLAG_ACTIVITY_NEW_TASK

該項目是關於使用AbstractThreadedSyncAdapter實現AbstractAccountAuthenticator以將服務器上的某些數據與內容提供者進行同步。

我做了所有事情,同時添加帳戶和同步正在運行沒有任何問題。

autenticator.xml:

現在我已經嘗試添加偏好屏幕仿如建議在android參考通過這樣的XML(搜索AbstractAccountAuthenticator,它是有解釋)

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" 
    android:accountType="typeOfAuthenticator" 
    android:icon="@drawable/icon" 
    android:smallIcon="@drawable/miniIcon" 
    android:label="@string/label" 
    android:accountPreferences="@xml/account_preferences" 
/> 

的偏好屏幕的XML看起來是這樣的:

account_preferences.xml:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<PreferenceCategory android:title="@string/pref_cat_general"> 
    <PreferenceScreen android:key="@string/pref_cat_scr_keygen" android:title="@string/pref_cat_scr_keygen_title" android:summary="@string/pref_cat_scr_keygen_summary"> 
    <intent android:action="android.intent.action.VIEW" android:targetPackage="com.android.clean" android:targetClass="com.android.clean.KeygenAct" /> 
    </PreferenceScreen> 
</PreferenceCategory> 
</PreferenceScreen> 

屏幕被提示應該是怎麼回事,但這就是問題所在:當我點擊PreferenceScreen時,它會導致系統崩潰(在模擬器和HTC-Desire中) 。

logcat的說:

ERROR/AndroidRuntime(18754): android.util.AndroidRuntimeException: 調用startActivity()從一個活動上下文之外 要求 FLAG_ACTIVITY_NEW_TASK標誌。這 真的是你想要的嗎?

(全Logcat on pastebin

這裏的清單,其中活動性被定義的一部分:

<activity android:name=".KeygenAct"> 
    <intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

整個測試代碼(這是我的必需品項目找到問題)是在googlecode找到(http://code.google.com/p/cleanproject/source/browse/)(Eclipse-Project)

謝謝你的幫助, Esentian

p.s .: keygen不是密鑰生成器,它意味着更多的key_general。 inartfully表達的位;)

回答

7

我有同樣的問題,剛剛發現,如果你改變自己的喜好:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<PreferenceCategory android:title="@string/pref_cat_general"> 
</PreferenceCategory> 
    <PreferenceScreen android:key="@string/pref_cat_scr_keygen" android:title="@string/pref_cat_scr_keygen_title" android:summary="@string/pref_cat_scr_keygen_summary"> 
    <intent android:action="android.intent.action.VIEW" android:targetPackage="com.android.clean" android:targetClass="com.android.clean.KeygenAct" /> 
    </PreferenceScreen> 
</PreferenceScreen> 

然後,它按預期工作。這很奇怪,因爲我希望PreferenceCategory將項目分組爲它的子項......並且爲什麼會導致這種不相關的(?)錯誤?

+0

謝謝你的回答!我正在將最後幾周搬到新的公寓,直到今天才離線。 這個解決方案就像是一種解決方法,但是謝謝,現在一切運行良好。 – Esentian 2010-10-08 15:46:11

+2

上帝該死的,哦,Android,只需通過刪除它終於工作。非常感謝你! – Defuera 2014-09-26 12:38:37

+0

它不適合我。 PreferenceScreen不顯示它是否在PreferenceCategory之外。 – 2016-07-13 10:05:01

相關問題