Я хочу использовать @Parcelize в @Palcelize, когда речь идет о Kotlin в Android, но это невозможно - PullRequest
0 голосов
/ 31 октября 2019

Проще говоря, я делаю модель, которая может быть отправлена ​​(используя @Palcelize), содержащую parcelable (@Palcelize) ,,,, и .... студия android сказала, что она неизвестна Source ,,

в принципе, я пытался не использовать Parcelize ,,,, но когда дело доходит до использования ArrayList ,,, я думаю, я должен использовать, чтобы использовать Parcelize ,,, но не работает ,,,,, я разделил так многодней ... для этой PLZ, помогите мне

Скажите мне в любом случае ... Я в порядке, даже я не мог использовать Parcelize

, это модель, которую я пытался использовать вспособ Parcelable, а также @Parcelize

это модель Комментарий

package com.artilearn.golf_road.Models

import android.os.Parcelable
import com.google.gson.internal.LinkedTreeMap
import kotlinx.android.parcel.Parcelize
import java.text.SimpleDateFormat
import java.util.*

@Parcelize
data class Comment(
    var id: Int,
    var content: String,
    var createdAt: Date?,
    var postID : Int?,
    var user: User
    ):Parcelable{

    companion object{
        fun create(json: LinkedTreeMap<String, Any>): Comment?{
            var id = (json.get("id") as? Double)?.toInt()
            check(id!=null){
                return null
            }

            var content = json.get("body") as? String
            check( content != null){
                return null
            }

            var createdAtString = json.get("createdAt") as? String
            var format = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
            var createdAt = if(createdAtString!=null){format.parse(createdAtString)} else {null}

            var postID = (json.get("normalPostID") as? Double)?.toInt()


            var userJSON = json.get("User") as LinkedTreeMap<String, Any>
            check(userJSON != null){
                return null
            }

            var user = User.create(userJSON)
            check(user!=null){
                return null
            }

            return Comment(id, content, createdAt, postID, user)
        }
    }
//
//
//    constructor(parcel: Parcel) : this(
//        id = parcel.readInt(),
//        content = parcel.readString(),
//        createdAt = parcel.read,
//        postID = parcel.readInt(),
//        user = parcel.readSerializable(User::class.java.classLoader)
////        user = User.createFromParcel(parcel)
//    )
//
//    override fun writeToParcel(p0: Parcel?, p1: Int) {
//        check(p0 !=null){
//            return
//        }
//
//        p0.writeInt(id)
//        p0.writeString(content)
//        p0.writeDate(createdAt)
//        postID?.let { p0.writeInt(it) }
//        p0.writeParcelable(user, 0)
//    }
//
//    override fun describeContents(): Int {
//
//        return 0
//    }
//
//    companion object CREATOR : Parcelable.Creator<Comment> {
//        override fun createFromParcel(parcel: Parcel): Comment {
//            return Comment(parcel)
//        }
//
//        override fun newArray(size: Int): Array<Comment?> {
//            return arrayOfNulls(size)
//        }
//        fun Parcel.writeDate(date: Date?) {
//            writeLong(date?.time ?: -1)
//        }
//        fun Parcel.readDate(): Date? {
//            val long = readLong()
//            return if (long != -1L) Date(long) else null
//        }
//        fun create(json: LinkedTreeMap<String, Any>): Comment?{
//            var id = (json.get("id") as? Double)?.toInt()
//            check(id!=null){
//                return null
//            }
//
//            var content = json.get("body") as? String
//            check( content != null){
//                return null
//            }
//
//            var createdAtString = json.get("createdAt") as? String
//            var format = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
//            var createdAt = if(createdAtString!=null){format.parse(createdAtString)} else {null}
//
//            var postID = (json.get("normalPostID") as? Double)?.toInt()
//
//
//            var userJSON = json.get("User") as LinkedTreeMap<String, Any>
//            check(userJSON != null){
//                return null
//            }
//
//            var user = User.create(userJSON)
//            check(user!=null){
//                return null
//            }
//
//            return Comment(id, content, createdAt, postID, user)
//        }
//
//    }



}
package com.artilearn.golf_road.Models

import android.os.Parcelable
import com.google.gson.internal.LinkedTreeMap
import kotlinx.android.parcel.Parcelize

@Parcelize
data class User(
    var id: Int,
    var email: String?,
    var nickname: String?,
    var level: Int,
    var profileURL: String?
) : Parcelable {

    companion object{
        fun create(json: LinkedTreeMap<String, Any>): User?{
            var id = (json.get("id") as? Double)?.toInt()
            check(id!=null){
                return null
            }
            var email = json.get("email") as? String

            var nickname = json.get("nickname") as? String
            check(nickname!=null){
                return null
            }

            var level = (json.get("level") as? Double)?.toInt()
            check(level!=null){
                return null
            }

            var profileURL = json.get("profileURL") as? String

            return User(id, email, nickname, level, profileURL)
        }
    }
//    constructor(parcel: Parcel) : this(
//        id = parcel.readInt(),
//        email = parcel.readString(),
//        nickname = parcel.readString(),
//        level = parcel.readInt(),
//        profileURL = parcel.readString()
//    ) {
//    }
//
//    override fun writeToParcel(parcel: Parcel, flags: Int) {
//        parcel.writeInt(id)
//        parcel.writeString(email)
//        parcel.writeString(nickname)
//        parcel.writeInt(level)
//        parcel.writeString(profileURL)
//    }
//
//    override fun describeContents(): Int {
//        return 0
//    }
//
//    companion object CREATOR : Parcelable.Creator<User> {
//        override fun createFromParcel(parcel: Parcel): User {
//            return User(parcel)
//        }
//        override fun newArray(size: Int): Array<User?> {
//            return arrayOfNulls(size)
//        }
//
//        fun create(json:LinkedTreeMap<String, Any>): User?{
//            var id = (json.get("id") as? Double)?.toInt()
//            check(id!=null){
//                return null
//            }
//            var email = json.get("email") as? String
//
//            var nickname = json.get("nickname") as? String
//            check(nickname!=null){
//                return null
//            }
//
//            var level = (json.get("level") as? Double)?.toInt()
//            check(level!=null){
//                return null
//            }
//
//            var profileURL = json.get("profileURL") as? String
//
//            return User(id, email, nickname, level, profileURL)
//        }
//    }
//
//

}

ошибка ниже

2019-10-31 23:14:32.516 8599-9114/com.artilearn.golf_road E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
    Process: com.artilearn.golf_road, PID: 8599
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/artilearn/golf_road/Models/User$Creator;
        at com.artilearn.golf_road.Models.User.<clinit>(Unknown Source:8)
        at com.artilearn.golf_road.Models.NormalPost$Companion.create(NormalPost.kt:43)
        at com.artilearn.golf_road.Activities.NormalPostFragment$fetchData$1.invoke(NormalPostFragment.kt:93)
        at com.artilearn.golf_road.Activities.NormalPostFragment$fetchData$1.invoke(NormalPostFragment.kt:28)
        at com.tlsolution.tlsmodules.Network.RequestManager$request$1.onResponse(RequestManager.kt:73)
        at okhttp3.RealCall$AsyncCall.run(RealCall.kt:138)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.artilearn.golf_road.Models.User$Creator" on path: DexPathList[[zip file "/data/app/com.artilearn.golf_road-irKC_zxlZZ-4cU1pX3IPCA==/base.apk"],nativeLibraryDirectories=[/data/app/com.artilearn.golf_road-irKC_zxlZZ-4cU1pX3IPCA==/lib/arm64, /system/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.artilearn.golf_road.Models.User.<clinit>(Unknown Source:8) 
        at com.artilearn.golf_road.Models.NormalPost$Companion.create(NormalPost.kt:43) 
        at com.artilearn.golf_road.Activities.NormalPostFragment$fetchData$1.invoke(NormalPostFragment.kt:93) 
        at com.artilearn.golf_road.Activities.NormalPostFragment$fetchData$1.invoke(NormalPostFragment.kt:28) 
        at com.tlsolution.tlsmodules.Network.RequestManager$request$1.onResponse(RequestManager.kt:73) 
        at okhttp3.RealCall$AsyncCall.run(RealCall.kt:138) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:764) 
2019-10-31 23:14:32.537 8599-9114/com.artilearn.golf_road I/Process: Sending signal. PID: 8599 SIG: 9

PLZ, помогите мне ..

даже я ДОЛЖЕН использовать ArrayList

Plz: (

...