2011-09-17 2 views
0

이 코드는 ImageView를 만들고 선형 레이아웃에 넣습니다.OnClickListener 내에 다음과 같이 나타납니다. "생성자 ImageView (새 View.OnClickListener() {})가 정의되지 않았습니다."

또한 클릭하면 이전 이미지 뷰를 제거하고 새로운 이미지 뷰로 교체해야하는 OnClick 수신기가 있습니다.

이상하게도 "생성자 ImageView (새 View.OnClickListener() {})가 정의되지 않음"이 표시됩니다.

final LinearLayout LinLayBtn = new LinearLayout(this); 
ImageView ivBtn = new ImageView(this); 
ivBtn = mkatt.makeKey(ivBtn, btnHue, btnSat, buttonScale, buttonScaleCnt, textAdjust, btnTextColor, buttonText, btnOpa, spacingLR, spacingTB); 
LinLayBtn.addView(ivBtn); 

LinLayBtn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     LinLayBtn.removeAllViews(); 
     ImageView ivBtn = new ImageView(this); // The constructor ImageView(new View.OnClickListener(){}) is undefined 
     ivBtn = mkatt.makeKey(ivBtn, btnHue, btnSat, buttonScale, buttonScaleCnt, textAdjust, btnTextColor, buttonText, btnOpa, spacingLR, spacingTB); 
     LinLayBtn.addView(ivBtn); 

    } 
    }); 

어떤 아이디어가 있습니까?

감사합니다.

+0

경고 :'ivBtn'을 두 번 정의하고 있습니다. 한 번은 필드로, 두 번째는'onClick()'메소드 안에있는 지역 변수로 사용됩니다. –

답변

6

this은 ImageView 생성자에서 OnClickListener 인스턴스입니다. Activity 클래스 (즉, 외부 클래스)의 인스턴스를 전달해야합니다. 외부 클래스가 MyActivity이라면, MyActivity.this을 ImageView 생성자에 전달해야합니다.

+0

감사합니다 남자, 작동합니다! :) – Roger

관련 문제