2017-10-04 2 views
1

저는 사용자 정의보기의 생성자에 대해 궁금합니다. 현재 나는 extendsRelativeLayout 중 하나입니다. 각보기에는 초기화를 위해 context이 필요합니다. 그래서 나는 super()을 생성자에 넣었다. 하지만, 내 수업에는 activity이 필요하므로 context을 가져 왔습니다. 내가 아는 한, activitycontext입니다. Android Studio은 내가 왜 생성자가 누락되었습니다 (context)는 걸까요? 내 클래스는 다음과 같습니다Android의 사용자 정의보기에서 IDE 경고

public class CustomView extends RelativeLayout { 

    private Activity activity; 

    public CustomView(Activity activity) { 
     super(activity.getApplicationContext()); 
     this.activity = activity; 
     initialize(activity.getApplicationContext()); 
    } 

    //initialize method 
} 

이 정확한 메시지 Android Studio 저를 준다 :

사용자 정의보기있는 CustomView가없는 생성자 도구로 사용됩니다 (컨텍스트) 또는 (문맥, 속성 세트) 또는 (문맥, 속성 세트, int)를

내가이 무시 하는가 아니면 모두 생성자에 전달해야합니다 : activitycontext?

모든 정보 주셔서 감사합니다! ViewContext으로 만 Activity없이 전화의 수 때문에

답변

2

더 나은 패스 대신 ActivityContext. 예를 들어 DialogService에서 호출하면

또한 documentation을 기반으로 한 경우에만 이 실제로 필요합니다.입니다. 그러나 해당 생성자는 인수로 AttributeSet을 포함하고 있습니다.

public CustomView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.activity = (Activity) context; //better to hold context actually 
    initialize(context); 
} 

그리고 확실히 좋은 연습

가능한 모든 생성자를 사용하는 것처럼해야 귀하의 경우에는

보인다

관련 문제