안드로이드 개발 질문/답변
(글 수 45,052)
제가 궁금해하는 것은 현재 개발중인 어플 UI의 전반적인 수정작업을 가하면서
그런데... YYY.java에서 정상적으로 처리된 (ImageButton)findViewById ....)을 그냥 copy&paste하면 오류가 사라집니다.....
위와 같은 소스에서 Button을 ImageButton으로 교체하면 어떠한 클래스에서는 컴파일 오류를 내보입니다.
기존의 Button을 ImageButton으로 변환하는 작업중에 생긴 문제점(?) 혹은 의문점(?)을 여쭈어보고자 하여 질문란을 이용하게 되었습니다.
참고로 저의 작업환경은 AMD계열 하드웨어셋, 이클립스 Helios Service Release 1, Android SDK 2.1api 입니다.
<XXX.java>
public class XXX extends Activity{
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.myinfomodify);
(Button)... 을 교체 ->> ((ImageButton)findViewById(R.id.myinfo_back)).setOnClickListener(mClickListener); <- 오류 발생 !!!
}
Button.OnClickListener mClickListener = new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated met
..그런데... YYY.java에서 정상적으로 처리된 (ImageButton)findViewById ....)을 그냥 copy&paste하면 오류가 사라집니다.....
public class XXX extends Activity{
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.myinfomodify);
((ImageButton)findViewById(R.id.myevent_back)).setOnClickListener(mClickListener); <--- YYY.java에서 copy&paste
((ImageButton)findViewById(R.id.myinfo_back)).setOnClickListener(mClickListener); <- 오류 사라짐...........@...@
}
Button.OnClickListener mClickListener = new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated met
..위와 같은 소스에서 Button을 ImageButton으로 교체하면 어떠한 클래스에서는 컴파일 오류를 내보입니다.
-> (Button)을 (ImageButton)으로 바꾸자 마자 "ImageButton cannot be resolved to a type"
그래서 저는 리스너가 Button.OnClickListener이기때문에 오류인가 싶어 ImageButton.OnClickListener를 새로 등록하면 될까 싶었는데
Button과 ImageButton 리스너를 동시 등록하는건 허용치 않는 것 같구,
( API를 살펴보니 둘다 android.View에서 타고 내려온 넘들이라 View상의 OnClickListener를 함께 나눠쓰는 것으로 일단 판단.??)
( API를 살펴보니 둘다 android.View에서 타고 내려온 넘들이라 View상의 OnClickListener를 함께 나눠쓰는 것으로 일단 판단.??)
어떠한 클래스에서는 Button을 ImageButton으로 교체해도 정상적인 컴파일이 이루어지고 실행시에도 아무 문제가 없습니다.
근데 진짜 이해할 수 없는 문제는 ImageButton 수정으로 인하여 오류가 발생한 클래스에 이전 클래스에서 사용중인
((ImageButton)findViewById(R.id.eventmodify_back)).setOnClickListener(mClickListener);
를 copy&paste하면 컴파일 오류가 바로 사라집니다.
...
줄여서 다시 말씀드리면,
1. A클래스에서 오류가 발생했네?
2. B클래스에서 비슷한 코드 한줄 (변수만다름) 을 A클래스로 복사해서 고치자.
3. A클래스로 복사했고 고치려는데,,,,,,,,오류 사라짐....어찌 된거지????
줄여서 다시 말씀드리면,
1. A클래스에서 오류가 발생했네?
2. B클래스에서 비슷한 코드 한줄 (변수만다름) 을 A클래스로 복사해서 고치자.
3. A클래스로 복사했고 고치려는데,,,,,,,,오류 사라짐....어찌 된거지????
질문 1. 혹시 이러한 현상에 대해 겪어보신 분이나 알고 계신 분 정보 좀 교류하였으면 좋겠습니다.
질문 2. 더불어 현재 Button.OnClicklistener만으로 Button과 ImageButton에서 발생하는 모든 Click Event처리를 캐치해내고 있는데 정상적인 반응인가요???



