Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在单独的活动中接收包裹对象参数?_Android_Kotlin_Parcelable - Fatal编程技术网

Android 如何在单独的活动中接收包裹对象参数?

Android 如何在单独的活动中接收包裹对象参数?,android,kotlin,parcelable,Android,Kotlin,Parcelable,我希望能够在下一个活动中接收并行对象的各个参数。我相信我使用的是正确的方法,只是不知道如何在第二个活动中输出一次参数输入 我的MainActivty.kt: package com.example.favouritefood import android.content.Intent import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.widget.ImageButton

我希望能够在下一个活动中接收并行对象的各个参数。我相信我使用的是正确的方法,只是不知道如何在第二个活动中输出一次参数输入

我的MainActivty.kt:

package com.example.favouritefood

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.ImageButton

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val food1: ImageButton = findViewById(R.id.imageButtonFood1)
        val food2: ImageButton = findViewById(R.id.imageButtonFood2)
        val food3: ImageButton = findViewById(R.id.imageButtonFood3)
        val food4: ImageButton = findViewById(R.id.imageButtonFood4)

        val pizza = Food(
                "Pizza", "www.test.com", "Italy, Tomato",
                "1/1/2018", "pizza@mail.com", 5)

        food1.setOnClickListener()
        {
            val intent = Intent(this, MetaDataActivity::class.java).apply {
                putExtra("Food", pizza)
            }
            startActivity(intent)
        }
    }
}
我的第二项活动(接收包裹):

其中
food.wrtieToParcel(food,0)
抛出一个类型不匹配的Required:Parcel!找到:可包裹在
食品上

如何读取对象中的参数

我的对象类供参考:

package com.example.favouritefood

import android.os.Parcel
import android.os.Parcelable

class Food(val name: String?, val location: String?, val keywords: String?, val date: String?, val email: String?, val rating: Int) : Parcelable {
    constructor(parcel: Parcel) : this(
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readInt()) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(name)
        parcel.writeString(location)
        parcel.writeString(keywords)
        parcel.writeString(date)
        parcel.writeString(email)
        parcel.writeInt(rating)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<Food> {
        override fun createFromParcel(parcel: Parcel): Food {
            return Food(parcel)
        }

        override fun newArray(size: Int): Array<Food?> {
            return arrayOfNulls(size)
        }
    }
}
package com.example.favoriteFood
导入android.os.packet
导入android.os.Parcelable
类别食品(val名称:String?、val位置:String?、val关键字:String?、val日期:String?、val电子邮件:String?、val评级:Int):可包裹{
构造函数(地块:地块):此(
parcel.readString(),
parcel.readString(),
parcel.readString(),
parcel.readString(),
parcel.readString(),
parcel.readInt()){
}
覆盖地块(地块:地块,标志:Int){
包裹。书写(名称)
包裹写入(位置)
parcel.writeString(关键字)
包裹登记(日期)
包裹书面记录(电子邮件)
包裹写入(评级)
}
覆盖有趣的描述内容():Int{
返回0
}
同伴对象创建者:Parcelable.CREATOR{
覆盖乐趣createFromParcel(包裹:包裹):食物{
归还食物(包裹)
}
覆盖新数组(大小:Int):数组{
返回阵列fnulls(大小)
}
}
}

您不需要调用
val test=food.writetopacket(food,0)


使用
val food=intent.getParcelableExtra(“food”)作为食物。

然后如何将编辑文本
name
设置为Pizza对象的第一个参数(即
Pizza
)?感谢您迄今为止的帮助name.setText(food.getName())
package com.example.favouritefood

import android.os.Parcel
import android.os.Parcelable

class Food(val name: String?, val location: String?, val keywords: String?, val date: String?, val email: String?, val rating: Int) : Parcelable {
    constructor(parcel: Parcel) : this(
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readInt()) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(name)
        parcel.writeString(location)
        parcel.writeString(keywords)
        parcel.writeString(date)
        parcel.writeString(email)
        parcel.writeInt(rating)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<Food> {
        override fun createFromParcel(parcel: Parcel): Food {
            return Food(parcel)
        }

        override fun newArray(size: Int): Array<Food?> {
            return arrayOfNulls(size)
        }
    }
}