나는 Kotlin에서 RelativeLayout을 하위 클래스로 가져 오려고 노력하고 있지만 세 가지 생성자가 붙어 있습니다.하위 클래스 Kotlin의 보조 생성자가있는 RelativeLayout
public RelativeLayout(Context context) {}
public RelativeLayout(Context context, AttributeSet attrs) {}
public RelativeLayout(Context context, AttributeSet attrs, int defStyle) {}
나는 http://devnet.jetbrains.com/message/5482057에 설명 된 프로세스를 시도했다하지만 난 내 사용 사례에 일치하는 방법을 볼 수 없습니다.
class SquareRelativeLayout(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0)
: RelativeLayout(context, attrs!!, defStyle) {}
숙어 코 틀린 방법에 대한 어떤 힌트가이 작업을 수행 :
나는 기본값을 사용하려했지만 그것은 응용 프로그램 시작시 충돌, 세 개의 생성자가 서로이라는 것을 희망?
[편집] 나는 코 틀린 0.8.11
쓰기입니다 Kotlin과 관련이 있지만 https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/에서 'RelativeLayout'의 소스를보고 싶을 수도 있습니다. 위젯/RelativeLayout.java 당신은 아마도 'ViewGroup'의 소스를 볼 필요가있을뿐만 아니라 3 명의 생성자가 서로를 호출하지 않고 직접'super' 버전을 호출해야합니다. – Squonk
네, 맞습니다. 내 문제는 Kotlin이 하나의 생성자 만 가질 수 있다는 것입니다. 이 제한 사항을 우회하는 몇 가지 트릭 (예 : 선택적 매개 변수, 팩토리 메소드)이 있지만이 특정 사례를 파악하는 데 어려움이 있습니다. – fstephany
'attrs !!'를'attrs? : someDummyAttrs'로 대체 할 수 없습니까? 나는 여기서 링크 된 토론이 어떤 용도로 사용되는 것은 아니라고 생각합니다. – maaartinus