2013-03-07 45 views
1
  1. 推出PreferenceFragment这是使用SearchSetttingActivity我的偏好头文件:抛出java.lang.ClassNotFoundException,当我从偏好头文件

    <header android:fragment="com.android.quicksearchbox.preferences.SearchableItemsFragment" 
         android:title="@string/search_sources" 
        /> 
    
        <header android:fragment="com.android.quicksearchbox.preferences.DeviceSearchFragment" 
         android:title="@string/device_settings_category_title" 
        /> 
    
        <header android:fragment="com.android.quicksearchbox.preferences.SearchEngineFragment" 
         android:title="@string/pref_content_search_engine" 
        /> 
    

第三个片段由我添加。

  1. 这是我下面的SearchEngineFragment来源:

    package com.android.quicksearchbox.preferences; 
    
    import com.android.quicksearchbox.R; 
    
    public class SearchEngineFragment extends SettingsFragmentBase { 
    
        public SearchEngineFragment() { 
        } 
    
        @Override 
        protected int getPreferencesResourceId() { 
         return R.xml.search_engine_preferences; 
        } 
    

    }

每次当触摸从PreferenceActivity第三个项目,它的每一次崩溃,崩溃日志低于:

FATAL EXCEPTION: main 
03-06 23:10:48.133 E/AndroidRuntime( 803): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.quicksearchbox/com.android.quicksearchbox.preferences.SearchSettingsActivity}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.quicksearchbox.preferences.SearchEngineFragment: make sure class name exists, is public, and has an empty constructor that is public 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.os.Looper.loop(Looper.java:137) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at dalvik.system.NativeStart.main(Native Method) 
03-06 23:10:48.133 E/AndroidRuntime( 803): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.quicksearchbox.preferences.SearchEngineFragment: make sure class name exists, is public, and has an empty constructor that is public 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.app.Fragment.instantiate(Fragment.java:581) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.preference.PreferenceActivity.switchToHeaderInner(PreferenceActivity.java:1117) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.preference.PreferenceActivity.switchToHeader(PreferenceActivity.java:1133) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.preference.PreferenceActivity.onCreate(PreferenceActivity.java:532) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.app.Activity.performCreate(Activity.java:4465) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  ... 11 more 
03-06 23:10:48.133 E/AndroidRuntime( 803): Caused by: java.lang.ClassNotFoundException: com.android.quicksearchbox.preferences.SearchEngineFragment 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  at android.app.Fragment.instantiate(Fragment.java:571) 
03-06 23:10:48.133 E/AndroidRuntime( 803):  ... 17 more 

请帮助我,谢谢!

回答

0

你试过:

keep class com.android.quicksearchbox.preferences.DeviceSearchFragment 
keep class com.android.quicksearchbox.preferences.SearchableItemsFragment 
+0

是的,我已经做到了。我在proguard.cfg中定义了它们。非常感谢! – alexunder 2013-04-26 06:27:53

相关问题