2012-12-09 139 views
1

我開始有片段的活動時,不斷收到錯誤。InflateException錯誤膨脹類片段

這是我的代碼的概述:活動從飛濺屏幕活動開始

首頁

home.xml(每個片段都有50%layout_weight

<LinearLayout> 
    <fragment android:name="com.example.test.FragmentClass1" ...> 
    <fragment android:name="com.example.test.FragmentClass2" ...> 
</LinearLayout> 

fragment1.xml

<LinearLayout> 
    //some EditTexts and Buttons here 
<LinearLayout> 

fragment2.xml

<LinearLayout> 
    <ListView ... /> 
</LinearLayout> 

FragmentClass1.java

public class FragmentClass1 extends Fragment{ 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     View view = inflater.inflate(R.layout.fragment1, container, false); 
     return view; 
    } 
} 

FragmentClass2.java

public class FragmentClass2 extends ListFragment{ 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     View view = inflater.inflate(R.layout.fragment2, container, false); 
     return view; 
    } 
} 

Home.java

public class Home extends Activity{ 
    public View onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home); 
     //still empty 
    } 
} 

錯誤日誌是這樣的:

12-09 20:39:00.317: E/AndroidRuntime(18214): FATAL EXCEPTION: main 
12-09 20:39:00.317: E/AndroidRuntime(18214): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.Home}: android.view.InflateException: Binary XML file line #10: Error inflating class fragment 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.os.Looper.loop(Looper.java:137) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.ActivityThread.main(ActivityThread.java:5039) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at java.lang.reflect.Method.invokeNative(Native Method) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at java.lang.reflect.Method.invoke(Method.java:511) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at dalvik.system.NativeStart.main(Native Method) 
12-09 20:39:00.317: E/AndroidRuntime(18214): Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class fragment 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.Activity.setContentView(Activity.java:1881) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at com.example.test.Home.onCreate(Home.java:16) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.Activity.performCreate(Activity.java:5104) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
12-09 20:39:00.317: E/AndroidRuntime(18214): ... 11 more 
12-09 20:39:00.317: E/AndroidRuntime(18214): Caused by: java.lang.ClassCastException: com.example.test.Fragment1 cannot be cast to android.app.Fragment 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.Fragment.instantiate(Fragment.java:585) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.Fragment.instantiate(Fragment.java:560) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.app.Activity.onCreateView(Activity.java:4709) 
12-09 20:39:00.317: E/AndroidRuntime(18214): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 
12-09 20:39:00.317: E/AndroidRuntime(18214): ... 21 more 

任何解決方案?由於

回答

5

如果你要使用片段的支持Android包的反向移植,你需要有你的活動從FragmentActivity繼承(或別的東西,從FragmentActivity繼承,如SherlockFragmentActivity)。


UPDATE

從您的堆棧跟蹤的關鍵行是:

12-09 20:39:00.317: E/AndroidRuntime(18214): Caused by: java.lang.ClassCastException: com.example.test.Fragment1 cannot be cast to android.app.Fragment 

現在,沒有什麼在名爲com.example.test.Fragment1您提供源代碼。如果這真的是你在com.example.test.FragmentClass1列表中所包含的內容,那麼大概你所繼承的Fragment不是android.app.Fragment。在這種情況下,最有可能的是android.support.v4.app.Fragment - 來自backport的Fragment類。如果是這種情況,請更改導入語句(以及其他代碼庫中的其他有缺陷的語句)。

+0

我計劃只爲ICS 4.0.3+製作。所以它應該沒問題吧? – hrsetyono

+1

@DarcCode:是的,但錯誤消息感覺就像您正在舊版Android上運行,如果這就是它的全部。如果堆棧跟蹤中有更多內容(例如「由...引起」),請將其張貼。 – CommonsWare

+0

我在運行Android 4.2.1的Galaxy Nexus中運行它順便說一句,我剛剛更新了完整的錯誤日誌。謝謝 – hrsetyono

0

你必須寫

super.onCreateView(inflater, container, savedInstanceState); 

在onCreateView方法。

+0

感謝您的回覆,但我已經得到了正確的答案。我不認爲我們需要添加超級​​ – hrsetyono

+0

,這對我也不適用... – Zhar

0

我有這個問題。 和我通過在清單中添加以下行來修復它。

<meta-data android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version"/> 
相關問題