Working on Honeycomb (tablet). We are unable to add a preference header which posts an intent as the first header element. Looks to be base code issue in PreferenceActivity where the fragment null check is not present. A preference header can have either an intent to be posted or a fragment to be displayed. If its an intent, fragment instantiation should not be made.
Also observing inconsistencies in the preference fragment shown on the right pane when the header has an intent to be posted.
Preference file is as below
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:title="@string/pref_content_search"
android:summary="@string/pref_content_search_summary"
android:id="@+id/set_search">
<intent android:action="android.intent.action.SELECT_SEARC H" />
</header>
<header android:fragment="com.android.quicksearchbox.prefe rences.SearchableItemsFragment"
android:title="@string/search_sources"
android:id="@+id/search_sources"
/>
</preference-headers>
FATAL EXCEPTION: main
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.quicksearchbox/com.android.quicksearchbox.preferences.SearchSetti ngsActivity}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.quicksearchbox.preferences.SearchEngin eFragment: make sure class name exists, is public, and has an empty constructor that is public
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1784)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:1800)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread.access$500(ActivityThre ad.java:124)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1019)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.os.Handler.dispatchMessage(Handler.java:99 )
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.os.Looper.loop(Looper.java:132)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread.main(ActivityThread.jav a:4084)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at java.lang.reflect.Method.invokeNative(Native Method)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at java.lang.reflect.Method.invoke(Method.java:491)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:841)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:599)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at dalvik.system.NativeStart.main(Native Method)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.quicksearchbox.preferences.SearchEngin eFragment: make sure class name exists, is public, and has an empty constructor that is public
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.Fragment.instantiate(Fragment.java:519 )
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.preference.PreferenceActivity.switchToHead erInner(PreferenceActivity.java:1040)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.preference.PreferenceActivity.switchToHead er(PreferenceActivity.java:1073)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.preference.PreferenceActivity.onCreate(Pre ferenceActivity.java:531)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.Activity.performCreate(Activity.java:4 411)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1048)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1748)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): ... 11 more
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): Caused by: java.lang.ClassNotFoundException: com.android.quicksearchbox.preferences.SearchEngin eFragment in loader dalvik.system.PathClassLoader[/system/app/QuickSearchBox.apk]
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at dalvik.system.PathClassLoader.findClass(PathClassL oader.java:251)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at java.lang.ClassLoader.loadClass(ClassLoader.java:5 40)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at java.lang.ClassLoader.loadClass(ClassLoader.java:5 00)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.Fragment.instantiate(Fragment.java:509 )
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): ... 17 more
07-28 12:49:52.150: WARN/ActivityManager(152): Force finishing activity com.android.quicksearchbox/.preferences.SearchSettingsActivity
Also observing inconsistencies in the preference fragment shown on the right pane when the header has an intent to be posted.
Preference file is as below
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:title="@string/pref_content_search"
android:summary="@string/pref_content_search_summary"
android:id="@+id/set_search">
<intent android:action="android.intent.action.SELECT_SEARC H" />
</header>
<header android:fragment="com.android.quicksearchbox.prefe rences.SearchableItemsFragment"
android:title="@string/search_sources"
android:id="@+id/search_sources"
/>
</preference-headers>
FATAL EXCEPTION: main
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.quicksearchbox/com.android.quicksearchbox.preferences.SearchSetti ngsActivity}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.quicksearchbox.preferences.SearchEngin eFragment: make sure class name exists, is public, and has an empty constructor that is public
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1784)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:1800)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread.access$500(ActivityThre ad.java:124)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1019)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.os.Handler.dispatchMessage(Handler.java:99 )
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.os.Looper.loop(Looper.java:132)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread.main(ActivityThread.jav a:4084)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at java.lang.reflect.Method.invokeNative(Native Method)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at java.lang.reflect.Method.invoke(Method.java:491)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:841)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:599)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at dalvik.system.NativeStart.main(Native Method)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.quicksearchbox.preferences.SearchEngin eFragment: make sure class name exists, is public, and has an empty constructor that is public
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.Fragment.instantiate(Fragment.java:519 )
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.preference.PreferenceActivity.switchToHead erInner(PreferenceActivity.java:1040)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.preference.PreferenceActivity.switchToHead er(PreferenceActivity.java:1073)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.preference.PreferenceActivity.onCreate(Pre ferenceActivity.java:531)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.Activity.performCreate(Activity.java:4 411)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1048)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1748)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): ... 11 more
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): Caused by: java.lang.ClassNotFoundException: com.android.quicksearchbox.preferences.SearchEngin eFragment in loader dalvik.system.PathClassLoader[/system/app/QuickSearchBox.apk]
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at dalvik.system.PathClassLoader.findClass(PathClassL oader.java:251)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at java.lang.ClassLoader.loadClass(ClassLoader.java:5 40)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at java.lang.ClassLoader.loadClass(ClassLoader.java:5 00)
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): at android.app.Fragment.instantiate(Fragment.java:509 )
07-28 12:49:52.140: ERROR/AndroidRuntime(3080): ... 17 more
07-28 12:49:52.150: WARN/ActivityManager(152): Force finishing activity com.android.quicksearchbox/.preferences.SearchSettingsActivity