我想知道是否有人可以帮助我使用 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
}
}
}
这是食品类
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/