안드로이드 개발 질문/답변
(글 수 45,052)
어떤 버튼을 누르면 커스텀 다이얼로그가 뜨구요,
거기서 이미지 버튼 하나 만들었거든요. 그걸 선택하고 OK버튼을 누르면 ColorPicker가 뜨도록 하고 싶은데..
일단 맨 위 메인 클래스에 implements ColorPickerDialog.OnColorChangedListener 했구요.
마지막에 인터페이스 함수인 colorChanged를 작성했구요..
public void colorChanged(int color) {
mPaint.setColor(color);
}Color Picker dialog 띄우는 문장에서..캐스팅이 안돼서 문제에요ㅠㅠ
new ColorPickerDialog(getApplicationContext(), this, mPaint.getColor()).show();
The constructor ColorPickerDialog(Context, new DialogInterface.OnClickListener(){}, int) is undefined 라고 호환이 안되더라구요..
Context는 getApplicationContext()로 넘기겠는데, this는 OnClickListener이고 받는 속성은 OnColorChangedListener인데 여기서 캐스팅이 안되는거 같아요. 어떻게 캐스팅 할 수 있을까요?
원래 소스에선 (this, this, mPaint.getColor())이렇게 넘겨주면 되던데 저는 안되서.. 어떻게 방법이 없을까요ㅠㅠ
참고로 실행은 되는데 ColorPickerDialog를 띄우려고 하면 오류 뜨구요
05-02 01:15:35.405: W/dalvikvm(3023): threadid=1: thread exiting with uncaught exception (group=0x4001f7e0) 05-02 01:15:35.420: E/AndroidRuntime(3023): FATAL EXCEPTION: main 05-02 01:15:35.420: E/AndroidRuntime(3023): java.lang.ClassCastException: com.android.photoframe.EditPhotoActivity$15 05-02 01:15:35.420: E/AndroidRuntime(3023): at com.android.photoframe.ColorPickerDialog.<init>(ColorPickerDialog.java:201) 05-02 01:15:35.420: E/AndroidRuntime(3023): at com.android.photoframe.EditPhotoActivity$15.onClick(EditPhotoActivity.java:527) 05-02 01:15:35.420: E/AndroidRuntime(3023): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 05-02 01:15:35.420: E/AndroidRuntime(3023): at android.os.Handler.dispatchMessage(Handler.java:99) 05-02 01:15:35.420: E/AndroidRuntime(3023): at android.os.Looper.loop(Looper.java:123) 05-02 01:15:35.420: E/AndroidRuntime(3023): at android.app.ActivityThread.main(ActivityThread.java:4627) 05-02 01:15:35.420: E/AndroidRuntime(3023): at java.lang.reflect.Method.invokeNative(Native Method) 05-02 01:15:35.420: E/AndroidRuntime(3023): at java.lang.reflect.Method.invoke(Method.java:521) 05-02 01:15:35.420: E/AndroidRuntime(3023): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 05-02 01:15:35.420: E/AndroidRuntime(3023): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 05-02 01:15:35.420: E/AndroidRuntime(3023): at dalvik.system.NativeStart.main(Native Method) 05-02 01:15:38.194: I/Process(3023): Sending signal. PID: 3023 SIG: 9이렇게 뜨네요.. ㅠㅠ 도와주세요~




리스너 이너클래스 안에 this를 쓰면 리스너 객체를 지칭합니다.
xxxActivity.this 형태로 해보시죠.