2013-01-23 39 views
0

我使用的是主 - 詳細信息流的類和xml佈局,這在創建新項目時可用,並列列表和詳細視圖。不過,我收到此錯誤:InflateException引起的<fragment>沒有綁定類的標籤

E/AndroidRuntime( 724): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.TrueFalse/com.TrueFalse.news.NewsModule}: android.view.InflateException: Binary XML file line #14: Error inflating class fragment 
E/AndroidRuntime( 724): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736) 
E/AndroidRuntime( 724): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752) 
E/AndroidRuntime( 724): at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
E/AndroidRuntime( 724): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993) 
E/AndroidRuntime( 724): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime( 724): at android.os.Looper.loop(Looper.java:126) 
E/AndroidRuntime( 724): at android.app.ActivityThread.main(ActivityThread.java:3997) 
E/AndroidRuntime( 724): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime( 724): at java.lang.reflect.Method.invoke(Method.java:491) 
E/AndroidRuntime( 724): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
E/AndroidRuntime( 724): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
E/AndroidRuntime( 724): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime( 724): Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class fragment 
E/AndroidRuntime( 724): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:688) 
E/AndroidRuntime( 724): at android.view.LayoutInflater.rInflate(LayoutInflater.java:724) 
E/AndroidRuntime( 724): at android.view.LayoutInflater.inflate(LayoutInflater.java:479) 
E/AndroidRuntime( 724): at android.view.LayoutInflater.inflate(LayoutInflater.java:391) 
E/AndroidRuntime( 724): at android.view.LayoutInflater.inflate(LayoutInflater.java:347) 
E/AndroidRuntime( 724): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:224) 
E/AndroidRuntime( 724): at android.app.Activity.setContentView(Activity.java:1777) 
E/AndroidRuntime( 724): at com.TrueFalse.news.NewsModule.onCreate(NewsModule.java:19) 
E/AndroidRuntime( 724): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
E/AndroidRuntime( 724): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700) 
E/AndroidRuntime( 724): ... 11 more 
E/AndroidRuntime( 724): Caused by: java.lang.NullPointerException 
E/AndroidRuntime( 724): at java.lang.VMClassLoader.findLoadedClass(Native Method) 
E/AndroidRuntime( 724): at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:390) 
E/AndroidRuntime( 724): at java.lang.ClassLoader.loadClass(ClassLoader.java:538) 
E/AndroidRuntime( 724): at java.lang.ClassLoader.loadClass(ClassLoader.java:508) 
E/AndroidRuntime( 724): at android.support.v4.app.Fragment.instantiate(Fragment.java:391) 
E/AndroidRuntime( 724): at android.support.v4.app.Fragment.instantiate(Fragment.java:369) 
E/AndroidRuntime( 724): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:272) 
E/AndroidRuntime( 724): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:660) 
E/AndroidRuntime( 724): ... 20 more 

我懷疑這事做的事實,我沒有設置任何機器人:名字=「」或者類=「」,這可以解釋堆棧跟蹤,但是上面提到的模板除了改變一些名字外,還有相同的xml文件。

在跟蹤我的代碼行數是

setContentView(R.layout.news_list_container); 

我NewsModule類擴展android.support.v4.app.FragmentActivity。


/res/values-large/refs.xml(圖news_list_container.xml到news_twopane_container.xml,對此我相當肯定發生這種情況,因爲它適用於那些不符合「大型設備罰款:約束。)

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <!-- List of layout overrides for screens that can support iPad style views. 
     This should mirror the other refs.xml file--> 
    <item name="news_list_container" type="layout">@layout/news_twopane_container</item> 
</resources> 

/res/layout/news_twopane_container.xml(第14行是

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" > 

    <fragment 
     android:id="@+id/news_list_container" 
     android:name="com.TrueFalse.news.NewsList" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" /> 

    <fragment 
     android:id="@+id/news_detail_container" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" /> 

</LinearLayout> 
+0

你能發表'Fragment'的相關代碼嗎? – 2013-01-23 02:47:17

+0

你叫'setContentView(R.layout.news_list_container);',你可以向我們展示這個XML文件嗎? –

+0

如果你添加了「android:name =」com.TrueFalse.news.DetailsFrgmt「,那會起作用嗎?我只是問,因爲我有同樣的問題,雖然你的回答解決了問題,但我不明白爲什麼我們的第一種方法不起作用 – feresr

回答

3

當我用的模板,我忽略了一個事實,即第二個片段實際上應該是一個片段,它的模板是一個一個的FrameLayout佔位符。我原來的懷疑原來是這個問題,因爲片段必須有一個類與它關聯。所以/res/news_twopane_container.xml應該是:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" > 

    <fragment 
     android:id="@+id/news_list_container" 
     android:name="com.TrueFalse.news.NewsList" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" /> 
    <!-- NOT fragment, because we don't have data to put here yet --> 
    <FrameLayout 
     android:id="@+id/news_detail_container" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" /> 

</LinearLayout> 
0

您可能希望通過更換onCreate方法來試試這個第二個片段的開始) onCreateView。我認爲這可能對你有所幫助。

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.i(LOG_TAG, "Loading Container with news_container.xml"); 
     setContentView(R.layout.news_list_container); 
-------------------------------------------------------------------------- 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
// Inflate the layout for this fragment 
return inflater.inflate(R.layout.news_list_container, container, false); 
} 
+0

該函數在FragmentActivity中不可覆蓋,並且我已經爲兩個片段都有通貨膨脹代碼 –

+0

有趣! – Rama

+0

如果在eclipse中突出顯示'FragmentActivity'並按下F4,則類型層次結構顯示唯一的onCreateView函數是用(String, Context,AttributeSet)是爲這個類實現的,我意識到Fragment類有這個方法 - 參數對,但這不是什麼他news_twopane_container.xml是爲了。 –