2016-08-05 61 views
0

Ich habe diese Null Ausnahme jedes Mal, wenn ich Proguard aktivieren und Retrofit verwenden, um es zu lösen, fügte ich meine Klassen hinzu, die Retrofit zur Proguard-Liste verwenden, Beispiel:NullException int java.util.List.size() mit Retrofit2, wenn Proguard aktiviert ist

-keep class com.abohani.example.utils.ban { *; } 

Auch tho ich es hinzugefügt haben, ich habe folgende Fehlermeldung:

java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference 
at com.abohani.example.utils.BanUtil$2.onResponse(BanUtil.java:91) 

Dieser Fehler tritt nur auf, wenn Proguard aktiviert ist, wenn es keine Fehler bei allen deaktiviert ist, die Linie angegeben im Fehler-/Codebeispiel:

Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(Constants.API_PATH) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 

    ReApi Api = retrofit.create(ReApi.class); 
    Call<Model> Connection = Api.GetList(UID,Key); 
    Connection.enqueue(new Callback<Model>() { 
     @Override 
     public void onResponse(Call<Model> call, Response<Model> response) { 
      List<BanItem> LatestItems = response.body().GetMain(); 
      for (int i = 0; i < LatestItems.size(); i++) { 
      } 
     } 

     @Override 
     public void onFailure(Call<Model> call, Throwable t) { 
      t.printStackTrace(); 
     } 


    }); 

die Zeile 91 ist die 'for' Schleife, die Antwort ist korrekt und es ist überhaupt nicht null, es ist nur durch die Aktivierung von proguard verursacht, und ich habe es bereits in die Liste aufgenommen und weiß es nicht warum es nicht funktioniert.

Was verursacht es? und wie man diese Fehler löscht, ohne Klassen zur Proguard-Liste hinzuzufügen, da es einige Klassen gibt, deren kompletten Code ich nicht anzeigen kann, und ich muss sie mit Proguard verschlüsseln.

Vielen Dank im Voraus.

+0

Sowohl Modell als auch BanItem werden von der Anweisung '-keep' angesprochen. – njzk2

+0

Alle meine Modelle sind in "Modell" -Paket, und sie sind auch in -keep. – Jaeger

+0

Ich denke, der Code für diese 2 Klassen könnte helfen. Stellen Sie sicher, dass alles, was geparst wird, ordnungsgemäß aufbewahrt wird. – njzk2

Antwort

0

Probieren Sie dieses Hinzufügen zu prouard und überprüfen. Stellen Sie sicher, dass alle Ihre Modelle unter dem Paket "utils" liegen.

+0

"Alle meine Modelle sind im" Modell "-Paket, und sie sind auch in -keep" plus ich kann nicht alle Util-Klassen einstellen, da es einige Klassen gibt, deren Code ich nicht zeigen möchte. – Jaeger