마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 관련 고수님들 조언을 구하고싶습니다.

0 추천

제가 현재 Activity의 코드 중복과 재사용을 위해서
Activity를 상속받은 BaseClass를 만들고 실제 실행되는 Activity는 그
BaseClass를 상속을 받아서 코드 중복과 재사용을 높이려고 만들고있는데요
실제 실행되는 Activity의 OnCreate 함수절의 setContentView로 사용하는 레이아웃을
재사용이 가능하였습니다.

하지만 버튼 메시지 같은 경우는 BaseClass내에서 다른 Activity들의 버튼 메시지를
총체적으로 관리를 하고싶어서 BaseClass내에서 버튼 메시지 setOnClickListener를
해줄때 같이 setContentDescription를 사용하여 특정한 구문자를 이용하여
숫자 0 이면 무슨 Activity다 숫자 1이면 무슨 Activity 버튼 메시지라는것을
구분 지울수가 있겠더라고요. 그래서 실제 테스트 해보니 문제가 없어 보이는데요
(BaseClass에서 자식의 메시지를 Super클래스 넘겨받아서 실제 BaseClass에서 모든 자식의 메시지를
처리할려고 고민하던중 XML버튼 리소스 등록할때 ContentDescription 이란게 있더라고요 그걸로 그 자식의 Activity를 구분하여 Baseclass에서 모든 자식의 메시지를 처리할 생각인데요. 이 부분에 문제가 없을까요?)

안드로이드 경험 많으신분은 제가 하는 이 행위가 차후에 어떤 문제가 있는지
한번 말씀해 보겠습니까?

글로 적어서 이해 하기 곤란 하실까봐 간단한 구조로 적어 볼게요

BaseClassActivity (public class BaseClassActivity extends Activity)
(다른 Activity에 사용될 중복되는 소스코드를 이 클래스에 다 관리하기위함)

실제사용된Activity1 (public class 실제사용된Activity1 extend BaseclassActivity)
실제사용된Activity2 (public class 실제사용된Activity1 extend BaseclassActivity)
(BaseClassActivity에서 필요하거나 틀린 부분만 정의해서 선언하거나 틀린부분은 오버라이드하기위함)

위와 같이 지금 해서 테스트를 성공했습니다. 근데 차후에 어떤 문제가 발생할수있을지
알고 싶습니다. 본인은 윈도우프로그래밍 경력 7년에 윈도우프로그래밍에서는 저런 형태로
제작해서 성공을 하였는데요. 안드로이드 어떤지 궁금합니다. <!--/EAP_CONTENT-->

 

모과이 (220 포인트) 님이 2013년 6월 24일 질문

3개의 답변

+1 추천
일단 위에 글을 나름 정리해보면
1. Activity를 상속을 받아 사용
 - 많이 사용하는 방식으로 중복되는 코드 또는 모든 Activity에서 
동일한 동작등을 위해 많이 사용하는 방식입니다
 
2. Activity에 onCreate의 setContentView에 같은 리소스를 등록하여 
레이아웃 재사용
 - 만드시는 어플의 화면이 모두 유사하다면 괜찮은 방법일 수 있지만 
나중을 생각한다면 그리 좋다고 하기 어려울거 같네요
이렇게 재사용 하는 방법은 간단하게 두가지 생각해 볼 수 있는데
하나는 layout파일에 공통되는 부분은 style로 적용하고 바뀌는 부분은 
include로 xml layout을 넣어서 사용하는 방법과
다른 하나는 공통의 layout을 setcontentview에 넣고 내용부분을 각기 
다른layout파일로 만든 다음 그 만들어진 layout을 activity에서
LayoutInflater 하여 만드는 방법이 있습니다
각기 내용은 키워드로 검색하시면 자세한 내용은 많이 있습니다
 
3. Button 이벤트 설정
공통으로 만들어진 리소스에 버튼이벤트를 각기 다르게 설정하는 것은 
view의 onClickLisetener를 이용하는 방법과 리소스의 button을 만들때 
android:onClick="onClick"등으로 이벤트를 설정하는 방법도 있습니다
이렇게 등록하고 테스트하셨던 setContentDescription이나 
android:tag(setTag)등에 구분자를 이용하셔서 만드셔도 될거 같네요
저는 공통 버튼이벤트 처리는 android:onClick 방식을 좀더 선호 하는 편입니다
 
수고하세요
블랙프리 (1,050 포인트) 님이 2013년 6월 24일 답변
0 추천
메세지 큐 구조를 도입하시려고 하는 것인가요?
익명사용자 님이 2013년 6월 24일 답변
0 추천

ContentDescription는 Accessibility 지원을 위한 속성입니다.

예를 들어 시각장애가 있으신 분들을 위해 컨텐츠의 내용을 소리로 읽어준다거나 할 때 사용됩니다.

시스템 설정에 접근성 항목에 TalkBack 기능을 켜보시면 확인 하실 수 있을 겁니다.

임의적 방식으로 위 속성을 사용하시는 것은 적합하지 않다고 판단됩니다.

구현하신 BaseClassActivity에서 버튼 텍스트를 셋팅하는 메소드를 하나 정의하시고

상속받는 각 액티비티들에서 오버라이드 해서 셋팅하는 편이 바람직한 구성일 것 같습니다.

 

b22n (22,940 포인트) 님이 2013년 6월 24일 답변
...