Jay*_*abu 6 java android kotlin
我刚刚开始使用 kotlin,我有一段 java 代码,我必须将其转换为 kotlin。这是Java代码:
public class NonSwipeableViewPager extends ViewPager
{
public NonSwipeableViewPager(Context context) {
super(context);
setMyScroller();
}
public NonSwipeableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
setMyScroller();
}
private void setMyScroller() {
//some code
}
}
Run Code Online (Sandbox Code Playgroud)
如果这段代码中只有一个构造函数,我可以这样写:
class NonSwipeableViewPager(context: Context): ViewPager(context) {
init {
setMyScroller()
}
private fun setMyScroller() {
//some code
}
}
Run Code Online (Sandbox Code Playgroud)
但是,由于有两个构造函数,每个构造函数都调用super()方法,我无法弄清楚如何将此代码转换为 kotlin。我最接近的是这个:
class NonSwipeableViewPager(context: Context): ViewPager(context) {
init {
setMyScroller()
}
constructor(context: Context?, attrs: AttributeSet?) : super(context!!, attrs) {
setMyScroller()
}
private fun setMyScroller() {
//some code
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在此代码中,我在此行中收到以下错误super(context!!, attrs):
primary constructor call expected
那么,如何super()从辅助构造函数调用?
class NonSwipeableViewPager: ViewPager {
init {
setMyScroller()
}
constructor(context: Context) : super(context)
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
private fun setMyScroller() {
//some code
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,辅助构造函数都不需要调用setMyScroller(),因为该init块将在调用后立即调用super。
| 归档时间: |
|
| 查看次数: |
1927 次 |
| 最近记录: |