728x90
안드로이드 탭 클릭시에 fragment를 사용하여 화면전환을 하도록 처리하였다.
그런데 화면에서 검색기능 호출 후 다시 돌아올 경우 replace만 사용하여 화면을 전환효과를 주었더니
이전 화면의 잔상처럼 2개의 화면이 겹치는 오류가 발생하였다.
잘못 만들었다.
다시 탭 구성을 하였다.
기존 코드에서
//각 fragment 페이지 초기화
fragment1 = new fragment1();
fragment2 = new fragment2();
fragment3 = new fragment3();
//tab setting
getSupportFragmentManager().beginTransaction().add(R.id.container, fragment1).commit();
//화면 전환시
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment2).commit();
탭 구성을 변경하였다.
//각 fragment 페이지 초기화
Fragment1 fragment1 = new Fragment1();
Fragment2 fragment2 = new Fragment2();
Fragment3 fragment3 = new Fragment3();
//tab setting
getSupportFragmentManager().beginTransaction()
.add(R.id.container, fragment1, "fragment1").show(fragment1)
.add(R.id.container, fragment2, "fragment2").hide(fragment2)
.add(R.id.container, fragment3, "fragment3").hide(fragment3).commit();
//탭 변경 및 fragment데이터 갱신이 필요할 시
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
List<Fragment> fragments = fragmentManager.getFragments();
for (Fragment item : fragments) {
if (item.getTag().equals("선택된 탭이름")) {
beginTransaction.show(item);
/*탭의 데이터 갱신*/
if (item instanceof OnDataUpdate)
((OnDataUpdate) item).onUpdateData();
} else {
//나머지탭 숨김
beginTransaction.hide(item);
}
}
beginTransaction.commit();
기존에는 fragment를 추가하고 계속 변경하면서 생겨난 오류를
탭에 들어가야 될 fragment를 다 추가한 뒤 필요한 fragment를 show해주고 나머지는 hide를 시켜
탭 선택에 따른 fragment화면을 보여주도록 수정하였다.
728x90
'Programing > android' 카테고리의 다른 글
android design 라이브러리 추가시 오류 (0) | 2022.03.12 |
---|---|
[android] 실행오류. version 31에서 앱 실행시 오류 (0) | 2022.02.08 |
[android] 카카오 광고 adfit 앱에 달기 (0) | 2021.12.06 |
[android] Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider 오류 error (0) | 2021.12.06 |
[android] 앱 화면이 꺼지지 않도록 설정하기 (0) | 2021.12.03 |
댓글