2016-09-17 46 views
1

我在我的NavControllerActivity上使用了Android註釋,它有兩個@Extras。一個額外的是可以自定義的類,BaseEntity,另一個是java.lang.Class對象(這是Serializable)。然而,當我的活動啓動時,我只得到entity,我沒有得到rootFragmentClassAndroid Annotations EActivity沒有得到額外的功能

@EActivity 
public class NavControllerActivity extends AppCompatActivity { 

    @Extra 
    BaseEntity entity; 

    @Extra 
    Class rootFragmentClass; 

    // .... 

    @AfterExtras 
    public void setupViews() { 

     Log.d("Nav", "rootFragmentClass: "+this.rootFragmentClass); 
     Log.d("Nav", "entity: "+this.entity); 


    } 

} 

我開始練習這樣的:

NavControllerActivity_.intent(this) 
    .rootFragmentClass(EditAnimalFragment_.class) 
    .entity(entity) 
    .start(); 

當執行setupViews(),我entity具有正確的價值,但rootFragmentClass爲空。

我做錯了什麼?

+0

我認爲提取多餘的東西時出了點問題。您應該在發生這種情況的代碼中放置一個斷點並對其進行調試。 – WonderCsabo

+0

我已經介紹了writeToParcel()方法和從包中讀取的構造函數,並且這兩個函數都沒有任何問題。 :/ –

回答

1

我做了一些修改問題的代碼更改,這裏是我對什麼是錯誤的假設。

我犯的錯誤是在我的包裹進/出代碼。我爲包裹寫了20個字段,但從包裹中讀取時,我只讀了15個字段。確保我的代碼與我的代碼相匹配使問題消失。

當我第一次遇到這個問題時,我沒有收到任何異常,但是當我做了更多的調查以確定哪些問題出錯時(Android Annotations, Parcelable object as Extra, producing IllegalArgumentException: is not a constant in android.text.Layout$Alignment),我終於得到了一個異常。

這最終導致我意識到我的代碼與我的out-code不匹配。

我認爲發生了什麼事情,因爲仍然有數據顯示unarcel,它是搞砸了另一個需要解壓縮的項目,並拋出一個似乎無關的異常。