कोटलिन आरसी की रिहाई के साथ, मैंने इसे सीखने के लिए एक ऐप लिखना शुरू किया, हालांकि मैं यह समझ नहीं सकता कि Parcelable
को काम करने के लिए कैसे प्राप्त किया जाए।कोटलिन में एंड्रॉइड पार्ससेलबल: CREATOR पार्ससेल योग्य डेटा क्लास पर नहीं मिला
डेटा वर्ग:
data class Project (val reponame:String,
val username:String,
val language:String,
val vcsUrl:String,
val branches:Map<String, Branch>) : Parcelable {
companion object {
val CREATOR = object : Parcelable.Creator<Project> {
override fun createFromParcel(`in`: Parcel): Project {
return Project(`in`)
}
override fun newArray(size: Int): Array<Project?> {
return arrayOfNulls(size)
}
}
}
protected constructor(parcelIn: Parcel) : this (
parcelIn.readString(),
parcelIn.readString(),
parcelIn.readString(),
parcelIn.readString(),
mapOf<String, Branch>().apply {
parcelIn.readMap(this, Branch::class.java.classLoader)
}
)
override fun describeContents(): Int {
throw UnsupportedOperationException()
}
override fun writeToParcel(dest: Parcel, flags: Int) {
dest.writeString(reponame)
dest.writeString(username)
dest.writeString(language)
dest.writeString(vcsUrl)
dest.writeMap(branches)
}
}
यह पढ़ना:
class ProjectDetailActivity : BaseActivity() {
lateinit var project: Project
companion object {
const val EXTRA_PROJECT = "extra_project"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
project = intent.extras.getParcelable(EXTRA_PROJECT)
tvTitle.text = project.reponame
}
}
अपवाद:,
Caused by: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.eggman.circleciandroid.model.Project
at android.os.Parcel.readParcelableCreator(Parcel.java:2415)
at android.os.Parcel.readParcelable(Parcel.java:2337)
at android.os.Parcel.readValue(Parcel.java:2243)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2592)
at android.os.BaseBundle.unparcel(BaseBundle.java:221)
at android.os.BaseBundle.get(BaseBundle.java:281)
at com.eggman.circleciandroid.ui.ProjectDetailActivity.onCreate(ProjectDetailActivity.kt:22)
मुझे यकीन है कि यह कुछ सरल मुझे याद आ रही है किसी और के लिए किया था है नवीनतम कोटलिन पर पार्सेलबल के साथ सफलता?
Kotlin संस्करण: 1.0.0-RC-1036
Kotlin प्लगइन संस्करण: 1.0.0-rc-1036-IJ143-4
कोड देखा जा सकता है @https://github.com/eggman87/circle-kotlin
इस मामले में समस्या जिस तरह से आप हो रही है में हो रहा है * EXTRA_PROJECT *, बस intent.extras.get (EXTRA_PROJECT) पर कॉल करें लेकिन समस्या पार्सेलियल परिभाषा में नहीं है, आपको इसे जोड़ने की आवश्यकता नहीं है। – Juancho
@juancho, मैं मानता हूं कि, संभवतः, 'पार्सेलबल' के साथ काम करने का कोई अन्य तरीका ओपी में समस्या का कारण नहीं बनता है (और मैं इसे पुन: पेश नहीं कर सका)। लेकिन अनुपस्थित स्थिर क्षेत्र की वजह से अपवाद निश्चित रूप से फेंक दिया गया है, और उत्तर इसे हल करता है। यही कारण है कि मैंने इसे रद्द करने का फैसला किया। क्या आप समस्या को पुन: पेश कर सकते हैं और जांच सकते हैं कि क्या यह हल करता है? अगर ऐसा होता है, तो मुझे लगता है कि यह एक बेहतर जवाब होगा। – hotkey
मैं क्लोन और प्रोजेक्ट का परीक्षण करता हूं और हां यह इस जेवीएमफ़ील्ड के बारे में है। मैं थोड़ा उलझन में हूं कि मुझे अपने प्रोजेक्ट में एक ही समस्या का सामना क्यों नहीं आ रहा है। इसके अलावा मैंने अपनी परियोजना में एक ही त्रुटि प्राप्त करने की कोशिश की लेकिन कुछ भी नहीं। भ्रम से बचने के लिए मैं अपनी टिप्पणियों को हटा दूंगा। धन्यवाद :) ! – Juancho