如何从 kotlin 中的内部 class 调用片段方法?
How to call a fragment method from an inner class in kotlin?
我在片段中创建了一个方法和一个内部 class。但是外部 class 方法在 Fragment 的内部 class 中无法访问?如何在片段的内部 class 中调用外部 class 方法或成员。下面是我的代码:
class BlankFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mOrientationListener = OrientationChangeListener(requireContext())
}
fun rotateUI(orientation: Int){
/// something
}
/**
* This callback returns rotation angle of the phone, to make it return orientation angles enable it on onStart and disable it onPause
*/
private var mOrientationListener: OrientationChangeListener? = null
internal class OrientationChangeListener (context: Context?) : OrientationEventListener(context) {
/** portrait
* (0, 359)
*
* (270) (90)
* (land) (land)
*/
override fun onOrientationChanged(orientation: Int) {
// this method is inaccessible
//rotateUI(orientation)
}
}}
对于 inner class 关键字应该是 inner 而不是 internal 然后你可以使用它来访问这样的方法:-
this@BlankFragment.rotateUI
我在片段中创建了一个方法和一个内部 class。但是外部 class 方法在 Fragment 的内部 class 中无法访问?如何在片段的内部 class 中调用外部 class 方法或成员。下面是我的代码:
class BlankFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mOrientationListener = OrientationChangeListener(requireContext())
}
fun rotateUI(orientation: Int){
/// something
}
/**
* This callback returns rotation angle of the phone, to make it return orientation angles enable it on onStart and disable it onPause
*/
private var mOrientationListener: OrientationChangeListener? = null
internal class OrientationChangeListener (context: Context?) : OrientationEventListener(context) {
/** portrait
* (0, 359)
*
* (270) (90)
* (land) (land)
*/
override fun onOrientationChanged(orientation: Int) {
// this method is inaccessible
//rotateUI(orientation)
}
}}
对于 inner class 关键字应该是 inner 而不是 internal 然后你可以使用它来访问这样的方法:-
this@BlankFragment.rotateUI