android4.4 写了一个简单的fragment demo。activity加载控件的时候报如下错误:
E/AndroidRuntime( 3080): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.doit.fragment/com.doit.fragment.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
E/AndroidRuntime( 3080): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
E/AndroidRuntime( 3080): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
E/AndroidRuntime( 3080): at android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime( 3080): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime( 3080): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 3080): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime( 3080): at android.app.ActivityThread.main(ActivityThread.java:5030)
E/AndroidRuntime( 3080): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3080): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 3080): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
E/AndroidRuntime( 3080): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:649)
E/AndroidRuntime( 3080): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 3080): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
E/AndroidRuntime( 3080): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
E/AndroidRuntime( 3080): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
E/AndroidRuntime( 3080): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
E/AndroidRuntime( 3080): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
E/AndroidRuntime( 3080): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
E/AndroidRuntime( 3080): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
E/AndroidRuntime( 3080): at android.app.Activity.setContentView(Activity.java:1929)
E/AndroidRuntime( 3080): at com.doit.fragment.MainActivity.onCreate(MainActivity.java:12)
E/AndroidRuntime( 3080): at android.app.Activity.performCreate(Activity.java:5239)
E/AndroidRuntime( 3080): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
E/AndroidRuntime( 3080): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
E/AndroidRuntime( 3080): ... 11 more
将加载布局的Activity改成继承FragmentActivity就可以了。
API中的原话:
FragmentActivity is a special activity provided in the Support Library to handle fragments on system versions older than API level 11.
If the lowest system version you support is API level 11 or higher, then you can use a regular Activity.
为何android4.4上还是需要继承FragmentActivity呢?