안드로이드 개발 질문/답변
(글 수 45,052)
하나의 Activity에서 화면전환을 하기 위하여
setConentView()를 이용하여 테스트하고 있습니다.
특정 버튼을 입력받으면 onClick 메서드에 setContentView(R.layout.xxxx); 로 화면전환은 잘 되었습니다.
이 후 작업은 전환된 화면의 xml중 <com.android.class명>로 삽입한 공통뷰의 레이아웃의 배경을 두번째 화면으로
전환됨과 동시에 바뀌도록 하는것인데...잘 안되네요!
위의 <com.android.class명> 은 첫화면, 두번재화면 모두 공통으로 들어있는 뷰입니다.
버튼 클릭과 통시에 위의 공통 뷰의 배경도 바뀌는것 까지 하려고 하는것인데...
setContentView를 주석처리하고 실행하면 공통부분의 이미지가 yyy.png로 바뀌는 것을 확인했습니다.
하지만 setContentView()를 추가하면 전체 화면전환만 되고 공통부분은 변함이 없습니다.
이상한건 화면전환 된 후에야 btn을 클릭했을 때 배경이미지가 바뀝니다.
아래와 같이 코딩을 하였습니다.
btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub setContentView(R.layout.xxx); second.setBackgroundResource(R.drawable.yyy); //두번째레이아웃의 배경을 바꿈 } });
이전의 View의 공통 부분, 나중의 View의 공통 부분 말이 공통이지 전혀 다른 객체가 됩니다.
공통 부분의 리소스 ID는 같을수 있지만 객체 자체는 완전 다른거죠.
setContentView 하면 새로운 View가 위로 엎어치게되겠죠
공통 영역도 새로운 View의 객체로 엎어치게 된상태에서
setBackgroundResource 하면 기존 객체에 백그라운드가 바뀌게되니 안되는겁니다.
새 View 엎어치셨으면
새로 참조를 가져오셔야 합니다.
second = (ImageView)findById(R.id.image);
이게 있어야 한다는거죠.