fun sharedElementTransition(view: View) {
val pair: Array<Pair<View, String>> = Array<Pair<View,String>>(size = 3) /ht/getting issue
pair[0] = Pair<View,String>(imglogo, "logo_shared")
pair[1] = Pair<View,String>(txvshared, "smartherd_shared")
pair[2] = Pair<View,String>(imgProfilepic, "pic_shared")
var options : ActivityOptions = ActivityOptions.makeSceneTransitionAnimation(this, *pair)
在Parameter Init中没有传值。另外,Pair中还有其他的传递值吗?有多个值。
Array 构造函数需要一个lambda参数来定义数组每个索引的初始值。由于你已经知道你要在数组中放入什么,而且这些值不是基于它们的数组索引,所以使用 arrayOf
函数来创建你的数组。你不需要一直重复通用类型,因为它们可以被推断出来。
fun sharedElementTransition(view: View) {
val pair: Array<Pair<View, String>> = arrayOf(
Pair(imglogo, "logo_shared"),
Pair(txvshared, "smartherd_shared"),
Pair(imgProfilepic, "pic_shared")
)
var options : ActivityOptions = ActivityOptions.makeSceneTransitionAnimation(this, *pair)
//...
}
你需要告诉它如何初始化列表中的每个元素,像这样。
val list = Array<Pair<Int,Int>>(size = 3) { Pair(0,0) }
这将使一个包含3个元素的列表,这些元素都是 Pair(0,0)
你也可以像这样根据索引来初始化元素。
val list = Array<Pair<Int,Int>>(size = 3) { index ->
Pair(index, index)
}
这将使一个列表看起来像:
[Pair(0,0), Pair(1,1), Pair(2,2)]
对于你的情况,可以试试这样。
val pair = Array<Pair<View,String>>(size = 3) { index ->
when(index) {
0 -> Pair(imglogo, "logo_shared")
1 -> Pair(txvshared, "smartherd_shared")
2 -> Pair(imgProfilepic, "pic_shared")
}
}