저번에 TabbedActivity를 사용해 간단한 Swipe View 구현을 확인하였는데,
단순히 종이를 넘기듯이 기본 레이아웃만을 넘기는 데에 그쳐서
정말로 필요하던, 그러니까 레이아웃을 한 액티비티를 실행할 때 처럼 제어하고
애니메이션 및 리스너들을 붙일 수 있는지가 궁금했다.
서치를 통해 간단하게, 혹은 조금 번거롭게 이를 성공할 수 있었는데,
만들어진 TabbedActivity 클래스에서 프래그먼트를 Inflate 하는
onCreateView 부분에 기존 액티비티에서 사용하던 방식대로 뷰를 참조하고,
애니메이션을 적용하고, 버튼들을 선언해 사용할 수 있음을 확인했다.
조금 다르게 적용해줘야하는 점은 각 프래그먼트에 해당하는 뷰를 따로 선언을 해주고,
선언해 준 각 뷰에서 findViewById를 사용해 뷰 요소들을 불러오고 사용해야만 한다는 점이다.
예 )
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// inflate할 뷰 프래그먼트를 선언
View viewOne = inflater.inflate(R.layout.activity_one, container, false);
View viewTwo = inflater.inflate(R.layout.activity_two, container, false);
// 각 뷰의 레이아웃 요소를 참조 및 제어
TextView textview_in_one = viewOne.findViewById(R.id.textview_in_one);
TextView textview_in_two = viewTwo.findViewById(R.id.textview_in_two);
// 페이지 카운트에 따라 순차적으로 뷰 프래그먼트를 return
if (pageCount == 0) {
pageCount++;
return viewOne;
} else {
return viewTwo;
}
}
기존 코드 양이 많다보니 따로 바깥에 선언해 데려오고 싶었는데, 바깥 클래스가 static으로 되어있어
지금은 내부에 전부 선언을 해 둔 상태다.
static class 인 PlaceholderFragment를 non static으로 사용해도 무방한지 등에 대해서 시행착오를 거치면
좀 더 깔끔하게 프래그먼트 제어가 가능하지 않을까 싶다.
< 참조 >
'ANDROID' 카테고리의 다른 글
[안드로이드] 터치이벤트를 수동으로 생성해 입력하기 (0) | 2018.05.25 |
---|---|
[안드로이드] 구글맵 객체를 참조해 onMapReady 함수 외부에서 제어하기 (0) | 2018.05.15 |
[안드로이드] Swipe View 적용을 위한 TabbedActivity 생성 및 풀스크린 레이아웃 적용 (0) | 2018.04.19 |
[안드로이드] 안드로이드 Toast 메시지 딜레이를 조정하자 (0) | 2018.04.12 |
[안드로이드] 무한 효과음 재생을 위한 여정 (GoldWave를 적극 활용하자) (2) | 2018.04.10 |