안드로이드 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() 를 사용하거나 값을 저장해놓고 다시 불러와서 사용하는 등의 처리가 필요합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)