2014-09-21 5 views
1

나는 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

+0

쓰기입니다 Kotlin과 관련이 있지만 https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/에서 'RelativeLayout'의 소스를보고 싶을 수도 있습니다. 위젯/RelativeLayout.java 당신은 아마도 'ViewGroup'의 소스를 볼 필요가있을뿐만 아니라 3 명의 생성자가 서로를 호출하지 않고 직접'super' 버전을 호출해야합니다. – Squonk

+0

네, 맞습니다. 내 문제는 Kotlin이 하나의 생성자 만 가질 수 있다는 것입니다. 이 제한 사항을 우회하는 몇 가지 트릭 (예 : 선택적 매개 변수, 팩토리 메소드)이 있지만이 특정 사례를 파악하는 데 어려움이 있습니다. – fstephany

+0

'attrs !!'를'attrs? : someDummyAttrs'로 대체 할 수 없습니까? 나는 여기서 링크 된 토론이 어떤 용도로 사용되는 것은 아니라고 생각합니다. – maaartinus

답변

2

업데이트을 사용하고 있습니다 : M11는 (. 0.11 *),이 문제를 해결하기 위해 secondary constructors를 사용할 수 있기 때문에. (아직) 이상의 생성자를 지원하지 않습니다

코 틀린, 그래서 당신이 해결 방법으로 할 수있는 모든 내가 아무 생각이 자바에서이 특정 클래스 (자유롭게 프로젝트에서 자바와 코 틀린를 혼합 할 수 있습니다)

+0

업데이트 : Kotlin은 이제 [여러 생성자] (http : // blog. jetbrains.com/kotlin/2015/03/kotlin-m11-is-out/) \ o / – fstephany

관련 문제