2017-02-06 19 views
0

я уже пытался добавить этотParcelable класс вызывает «немаршалинг код 33 неизвестного типа со смещением 172» ошибки после повторного ввода приложения

-keepclassmembers class * implements android.os.Parcelable { 
static ** CREATOR; 
} 

к моему proguard-rules.pro файл как предложено: Proguard causing RuntimeException (Unmarshalling unknown type code) in Parcelable class

Здесь это мой класс, который реализует разумные решения, есть ли какие-либо проблемы, которые могут вызвать эту ошибку? Правильно ли я занимаюсь реализацией?

Я получаю сообщение об ошибке, а последующее усилие закрывается после того, как приложение работает в течение длительного периода времени и было убито операционной системой (однако я не получаю ошибку, если я удаляю окно многозадачности) ,

public class WeatherData implements Parcelable{ 

public Condition condition = new Condition(); 
public Forecast forecast = new Forecast(); 
public Location location = new Location(); 

public WeatherData() { 
    //empty 
} 

public static class Condition { 
    public static String currentDescription; 
    public static String date; 
    public static int currentTemp; 
} 

public static class Forecast { 
    public static List<Integer> tempMin = new ArrayList<>(); 
    public static List<Integer> tempMax = new ArrayList<>(); 
    public static List<String> description = new ArrayList<>(); 
    public static List<Integer> windSpeed = new ArrayList<>(); 
    public static List<String> dayOfWeek = new ArrayList<>(); 
    public static List<String> imageURL = new ArrayList<>(); 
} 

public static class Location { 
    public static String name; 
} 

public WeatherData(Parcel in) { 
    //empty 
} 

public static final Creator<WeatherData> CREATOR = new Creator<WeatherData>() { 
    @Override 
    public WeatherData createFromParcel(Parcel in) { 
     return new WeatherData(in); 
    } 

    @Override 
    public WeatherData[] newArray(int size) { 
     return new WeatherData[size]; 
    } 
}; 

@Override 
public int describeContents() { 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel parcel, int i) { 
    //location 
    parcel.writeString(Location.name); 
    //condition 
    parcel.writeString(Condition.currentDescription); 
    parcel.writeString(Condition.date); 
    parcel.writeInt(Condition.currentTemp); 
    //forecast 
    parcel.writeList(Forecast.tempMin); 
    parcel.writeList(Forecast.tempMax); 
    parcel.writeList(Forecast.description); 
    parcel.writeList(Forecast.windSpeed); 
    parcel.writeList(Forecast.dayOfWeek); 
    parcel.writeList(Forecast.imageURL); 
} 

EDIT:

Вот StackTrace

E/AndroidRuntime: FATAL EXCEPTION: main 
                        Process: com.murraystudio.weatherapp, PID: 14219 
                        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.murraystudio.weatherapp/com.murraystudio.weatherapp.MainActivity}: java.lang.NullPointerException: Attempt to read from field 'com.murraystudio.weatherapp.datamodels.WeatherData$Condition com.murraystudio.weatherapp.datamodels.WeatherData.condition' on a null object reference 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                         at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                         at android.os.Looper.loop(Looper.java:154) 
                         at android.app.ActivityThread.main(ActivityThread.java:6119) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
                        Caused by: java.lang.NullPointerException: Attempt to read from field 'com.murraystudio.weatherapp.datamodels.WeatherData$Condition com.murraystudio.weatherapp.datamodels.WeatherData.condition' on a null object reference 
                         at com.murraystudio.weatherapp.WeatherFragment.updateWeatherUI(WeatherFragment.java:230) 
                         at com.murraystudio.weatherapp.WeatherFragment.onCreateView(WeatherFragment.java:124) 
                         at android.app.Fragment.performCreateView(Fragment.java:2353) 
                         at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:995) 
                         at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1171) 
                         at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1153) 
                         at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2039) 
                         at android.app.FragmentController.dispatchActivityCreated(FragmentController.java:176) 
                         at android.app.Activity.performCreateCommon(Activity.java:6673) 
                         at android.app.Activity.performCreate(Activity.java:6681) 
                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)  
                         at android.app.ActivityThread.-wrap12(ActivityThread.java)  
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)  
                         at android.os.Handler.dispatchMessage(Handler.java:102)  
                         at android.os.Looper.loop(Looper.java:154)  
                         at android.app.ActivityThread.main(ActivityThread.java:6119)  
                         at java.lang.reflect.Method.invoke(Native Method)  
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  
+0

Не могли бы вы опубликовать stacktrace? – degs

+0

@degs В настоящее время в комплекте – sanic

+0

@IntelliJAmiya, что вы имеете в виду? – sanic

ответ

0

Вы не можете разбазаривать статические переменные. Преобразуйте переменные в посылку в нестационарную переменную.

0

При использовании Parcelable или Serializable, вашего класса Pojo (то есть WeatherData), вашего класса, откуда вы отправляете посылку и класс, в котором вы получаете посылку, все должны расширять Parcelable или Serializable.