2017-01-27 14 views
3

Это автоматическая реализация Parcelable, созданная Android Studio. Это так или иначе, всегда игнорирует resultCode, который имеет тип IntegerПочему java.lang.Integer игнорируется в автоматическом Parcelable реализации Android Studio?

public class TestParceable implements Parcelable { 

     private String message; 
     private Integer resultCode; //an Integer 

    protected TestParceable(Parcel in) { 
     message = in.readString(); 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(message); 
    } 

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

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

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

С другой стороны, если я изменить тип resultCode к int, автоматическая Parcelable реализация считает.

public class TestParceable implements Parcelable { 

     private String message; 
     private int resultCode; //an int 

protected TestParceable(Parcel in) { 
    message = in.readString(); 
    resultCode = in.readInt(); 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeString(message); 
    dest.writeInt(resultCode); 
} 

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

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

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

Я пропустил что-то здесь или это и ошибка Android Studio?

+1

Я предполагаю, что это ошибка Android Studio, хотя на данный момент я не вижу в ней проблемы. – CommonsWare

+0

Последнее, что я проверил, Android Studio не предоставляет генератор кода Parcelable, и нам приходилось использовать такие инструменты, как https://github.com/mcharmas/android-parcelable-intellij-plugin. Я что-то упустил? –

+0

Я использую AS 2.2.3 –

ответ

0

Это ошибка (https://code.google.com/p/android/issues/detail?id=233034), которая исправлена ​​для Studio 2.4.

+0

@GoogleAndroidStudioTeamMember, где находится Android Студия 2.4? Есть 3,0 все еще в предварительном просмотре из-за Kotlin? – Qamar

+0

@Pravin Sonawane вы можете использовать http://www.parcelabler.com/ на данный момент – Qamar