안드로이드 fragment 재로딩 안되게 활수 있나요?
조회수 1143회
BottomNavigationView를 사용해서 레이아웃을 만들었습니다
세개의 fragment 로 만들었는데요
문제는 각 항목마다 리스트뷰(리싸이클러뷰)가 있는데요
각 항목을 이동했다가 다시 오면 리스트뷰를 보던 위치가 아니라
리스트뷰의 제일 위로 이동한다는것입니다
각 항목을 이동해도 보던 위치를 그대로 유지하고 싶은데 가능할까요?
소스는 아래와 같습니다
감사합니다^
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item)
{
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.navigation_home:
selectedFragment = MainFragment.newInstance();
break;
case R.id.navigation_dashboard:
selectedFragment = SencondFragment.newInstance();
break;
case R.id.navigation_notifications:
selectedFragment = ThirdFragment.newInstance();
break;
}
if(selectedFragment != null)
{
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, selectedFragment);
transaction.commit();
}
return true;
}
};
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
replace() 는 remove() -> add() 로 동작 하기 때문에 Fragment 인스턴스를 재생성 하게 됨으로써 스크롤 포지션 등이 초기화 됩니다. 따라서 hide(), show() 를 사용하거나 값을 저장해놓고 다시 불러와서 사용하는 등의 처리가 필요합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력