android - 预期类型与 Kotlin 中的 if 表达式不匹配

标签 android image kotlin

我想知道是否有人可以帮助我使用 Kotlin 解决 if 表达式中类型不匹配的问题?

我有 2 个 Activity 可以连接: 第一个 Activity 是 MainActivity.kt,第二个 Activity 是 Main2Activity.kt,在第一个 Activity MainActivity 类 中,我遇到了 的问题不匹配的类型,因为我在第二个 Activity 中使用 if 语句选择要转换为 特定适配器特定图像,例如单击图像时 (a) 转换为 ADAPTER_TYPE_1 的第二个 Activity ,图像 (b) 转换为 ADAPTER_TYPE_2 的第二个 Activity

注意:图片类型是Int,我在Drawable中的第一张图片名为a,第二张图片名为b

这是一个MainActivity.kt

class MainActivity : AppCompatActivity() {

var adapter:FoodAdapter?=null
var listOfFoods =ArrayList<Food>()
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(layout.activity_main)


    // load foods
    listOfFoods.add(Food("Coffee","   Coffee preparation is", a))
    listOfFoods.add(Food("Coffee","   Coffee preparation is", b))


    adapter= FoodAdapter(this,listOfFoods)

    gvListFood.adapter =adapter

}


class  FoodAdapter: BaseAdapter {
    var listOfFood= ArrayList<Food>()
    var context: Context?=null
    constructor(context:Context,listOfFood:ArrayList<Food>):super(){
        this.context=context
        this.listOfFood=listOfFood
    }
    override fun getView(p0: Int, foodView: View?, p2: ViewGroup?): View? {
        val food = this.listOfFood[p0]
        var inflator = context?.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
        var foodView= inflator.inflate(layout.food_ticket, null)
        foodView.ivFoodImage.setImageResource(food.image)
        foodView.ivFoodImage.setOnClickListener {

            val intent = Intent(context, Main2Activity::class.java)


            if (foodView.ivFoodImage == a){
                intent.putExtra(Main2Activity.EXTRA_ADAPTER_MODE, AdapterType.ADAPTER_TYPE_1.ordinal)
                intent.putExtra("name", food.name)
                intent.putExtra("des", food.des)
                intent.putExtra("image", food.image)

                context!!.startActivity(intent)

            }
            if (foodView.ivFoodImage == b) {
                intent.putExtra(Main2Activity.EXTRA_ADAPTER_MODE, AdapterType.ADAPTER_TYPE_2.ordinal)
                intent.putExtra("name", food.name)
                intent.putExtra("des", food.des)
                intent.putExtra("image", food.image)

                context!!.startActivity(intent)

            }





        }
        return foodView
    }

    override fun getItem(p0: Int): Any {
        return listOfFood[p0]
    }

    override fun getItemId(p0: Int): Long {
        return p0.toLong()
    }

    override fun getCount(): Int {

        return listOfFood.size
    }

}
}

error image

这是食品类

 class Food(val name: String, val des: String, val image: Int)

最佳答案

尝试以 kotlin 的方式思考,即尝试不使用可空类型。您的 Food 类也是用 java 风格编写的,但可以用更简单的风格编写: class Food(val name: String, val des: String, val image: Int)

当您经常覆盖 java 方法时,您可以删除 '?'从参数类型中删除 '!!'在未来需要非空类型的时候。 var 类属性是不可取的,因为它提供了您需要注意的状态,以确保在运行时没有任何事情发生。

以上提示可能会解决您的问题。 如果不是,您能否提供有关此错误的更多信息?(例如错误的行号)

关于android - 预期类型与 Kotlin 中的 if 表达式不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46639046/

相关文章:

image - 特征匹配难度

用于微调器的 Android Kotlin onItemSelectedListener 不起作用

android - 公共(public)静态最终 int 13687=0x7f020000;错误

android - 如何添加线程?

android - 带有 AppCompat BottomSheets 的 NullPointerException

android - 所有屏幕设备的图像大小

ios - 无法计算 iOS App 上的文件大小

multithreading - 在为 Runnable 提供 lambda 时,为什么我不必重写 run 方法?

java - Kotlin - 是否可以从高阶函数返回变量?

android - 在 Activity 中检测 PopupWindow 的关闭