마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

프레그먼트매니저 beginTransaction()

0 추천
뷰페이저에 두개의 프레그먼트로 두페이지를 만들었습니다.

둘다 리스트뷰가 들어가있고 아이템버튼을 누르면 해당포지션 아이템이 현재 리스트뷰에서 지워지고 안보이는 프래그먼트의 리스트뷰에 갱신이 되게 만들고싶었습니다. 그래서 beginTransaction을 이용해서 뷰페이저중 프레그먼트중 안보이는 프래그먼트를 갱신시키고자 하는데요.

그냥 바로 replace해버렸더니 말도안되는 숫자가 들어가버리네요.

얘를 들어서 총 ArrayList 에 있는 아이템이 12개이고 1부터 12까지의 번호를 가지고 있다고 칩니다.

그리고 현재 프래그먼트에는 1~6 까지 안보이는 다음프래그먼트에는 7~12까지 있습니다. 이 상태에서

현재프래그먼트에서 6번의 버튼을 눌르면 1~5까지만 남고 6번이 사라집니다. 그러면 6번은 6~12번, 즉 6번이 제일 작은 숫자이기 때문에 제일 위에 만들어지게 되야하는데(서버값을 갱신하니까 저절로 이렇게 됩니다.)

정작 해보면 12가 두개가 생겨버립니다. 이렇게 계속 버튼이 눌릴때마다 12번이 계속 생기다가 나중에 마지막 하나를 보내면 그건 또 아이템이 생성이 안돼있습니다. 참 무슨일진지...

그래서 replace라는게 정확하게 프래그먼트를 교체할때 사용하는게 맞나요? 그렇다면 왜 이런현상이 나타나는지 궁금하네요..그냥 뷰페이저어댑터를 갱신시켜버리면 이런일 전혀없이 잘 되거든요..

아니면 현재 존재하는 프래그먼트를 remove한다음에 다시 만들어줘야 이런일이 안생길까요?

remove하면 mNextAnim' on a null object reference라며 널포인터익셉션이 뜨네요..

transaction이 정확하게 어떤 역할을 하느지도 찾아봐도 잘 모르겠고.. 어떻게하면 좋을지 조언부탁드립니다.
원펀치맨 (2,860 포인트) 님이 2016년 8월 9일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...