智能转换为“GridLayoutManager”是不可能的,因为“ViewManager”是一个可变属性,此时可能已更改
是错误,AndroidStudio显示时,试图添加一个除法器到我的回收视图。
PixelsFragment.kt
class PixelsFragment : Fragment() {
private lateinit var recyclerView: RecyclerView
private lateinit var viewManager: RecyclerView.LayoutManager
private lateinit var viewAdapter: RecyclerView.Adapter<*>
private var listener: OnFragmentInteractionListener? = null
private lateinit var pixels: List<Pixel>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var numberOfColumns = 1
viewManager = GridLayoutManager(this.context, numberOfColumns)
viewAdapter = MyRecyclerViewAdapter(pixels)
recyclerView = view!!.findViewById<RecyclerView>(R.id.RVJanuary).apply {
setHasFixedSize(true)
layoutManager = viewManager
adapter = viewAdapter
addItemDecoration(DividerItemDecoration(recyclerView.context, viewManager.getOrientation())) //Error on this line, underlining viewManager
}
}
}
我找到了这个答案,它说这样的问题可能是因为在执行该行时变量可能碰巧为< code>null,然后他们提供了3个解决方案。然而,根据我的理解,< code>viewManager决不能是< code>null,因为我将它声明为不可为null的变量。因此,我在寻找一种不同的解释和解决方法。
您已经将< code>viewManager声明为< code > RecyclerView。LayoutManager。通用< code > RecyclerView。LayoutManager没有< code>getOrientation()方法-该方法仅存在于LinearLayoutManager及其子类中,例如您正在使用的GridLayoutManager。
错误消息告诉您的是,它不能假设RecyclerView.LayoutManager
类型的viewManager
是GridLayoutManager
,因为它是一个可变属性-您可以将其设置为其他一些LayoutManager
没有getOrience()
方法。
解决这个问题最简单的方法是将< code>viewManager的类型更改为< code>GridLayoutManager。这样,只有一个< code>GridLayoutManager可用,并且< code>getOrientation()保证可用。
“智能强制转换为”GridLayoutManager“是不可能的,因为”ViewManager“是一个可变属性,此时可能已发生更改。” 是AndroidStudio在尝试向RecolyerView添加分隔符时显示的错误。
我正在用kotlin为android制作一个小型tasker。我将主要活动分成一些片段,然后为每个片段创建一个视图模型。但是现在这里出现了一个问题。 下面是一些代码: 我本来希望在observer方法的帮助下在主屏幕上看到一些创建的单选按钮,但是我得到了一个例外,这在问题的标题中提到。提前感谢您的帮助!
为什么当我使用No.2脚本时Android Studio显示错误。我发现1和2之间没有区别。 请解释这个案例
我知道是可变变量,但我显式检查了并且是类型,那么为什么不能智能转换为该类型呢? 我怎样才能把它修好呢?
我尝试将我的代码从java转换为kotlin,因此我面临这个错误。我不明白为什么我会得到这个错误 错误 我只是附加给我一个错误的代码并突出显示它
我正在尝试在 Kotlin 中生成一个单例,并且遇到了问题,因为我无法。 这似乎是制作单例的一种非常标准的方法。为什么它不让我,我该如何解决它?