2012-10-11 117 views
1

我嘗試使用帶有AndroidAnnotations和maven的片段。 它的工作與Android 4.0+,但後來我試圖使它與Android 2.3.3工作,我不得不使用支持-V4行家庫:支持Android片段,java.lang.NoSuchMethodException:片段(Context,AttributeSet)

<dependency> 
    <groupId>com.google.android</groupId> 
    <artifactId>support-v4</artifactId> 
    <version>r7</version> 
</dependency> 

我的片段被定義爲:

<android.support.v4.app.Fragment android:id="@+id/myFragment" 
           android:layout_width="fill_parent" 
           android:layout_height="wrap_content" 
           class="com.bla.HeaderFragment_"/> 

和我的動態擴展FragmentActivity

我得到這個例外,當我運行該應用程序:

.....

Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v4.app.Fragment 
at android.view.LayoutInflater.createView(LayoutInflater.java:508) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 
at android.app.Activity.setContentView(Activity.java:1657) 
at com.tagonsoft.codecamp.MainActivity_.setContentView(MainActivity_.java:46) 
at com.tagonsoft.codecamp.MainActivity_.onCreate(MainActivity_.java:31) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
... 11 more 

Caused by: java.lang.NoSuchMethodException: Fragment(Context,AttributeSet) 
at java.lang.Class.getMatchingConstructor(Class.java:643) 
at java.lang.Class.getConstructor(Class.java:472) 
at android.view.LayoutInflater.createView(LayoutInflater.java:480) 
... 22 more 

任何想法爲什麼?

+0

你的片段是否有一個空的構造函數? – dymmeh

+0

不,我嘗試使用它與AndroidAnnotations像這裏https://github.com/excilys/androidannotations/wiki/Enhance-Fragments – gdogaru

+2

使用'fragment'標籤而不是'android.support.v4.app.Fragment'。 – Luksprog

回答

2

嘗試<fragment>標記和name屬性的類名稱。此外,您使用的課​​程名稱爲com.bla.HeaderFragment_,看起來像是一個錯字。

<fragment android:id="@+id/myFragment" 
      android:name="com.bla.HeaderFragment_" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
           /> 

更多示例here

+0

它似乎與_android:name_和_class_一起工作。來自支持庫的文檔提及_class_ http://developer.android.com/reference/android/app/Fragment.html#Layout。最後的下劃線是由AndroidAnnotations生成的類。 – gdogaru

+0

我現在找不到,但是,我已經閱讀過關於這個地方的信息,'name'將適用於新舊API。 –