화면전환에 문제점이 있는데,
저는 이렇게 추측하고 있습니다. 뭐가 문제인지 어떻게 고쳐야하는지 알려주세요 .
감사합니다.
-------------------------------------
리스트뷰와 그리드뷰가 구성되어있는 프래그먼트1이 있다.
이 프래그먼트 말고도 다른 여러개의 프래그먼트들이 있으며 그들을 감싸고있는 프래그먼트2가 있다.
감싸고 있는 프래그먼트2의 하는 일은 여러 프래그먼트들을 화면에 체인지하면서 보여주도록 되어있다.
프래그먼트1에 프래그먼트2의 리스트와 그리드뷰를 체인지 할 수 있도록 하는 버튼이 하단에 위치해있다.
프래그먼트2에 넣어야 할것같지만 프래그먼트1에 넣은 이유는,
프래그먼트들이 Swipe로 체인지 되는 구조인데, 하단의 버튼이 프래그먼트1에 있다면
프래그먼트1 화면이 Swipe 될때 프래그먼트1 화면이 움직임에 따라서 같이 움직이기 때문이다.
그래서 감싸고있는 프래그먼트2에 넣었다.
프래그먼트2의 하단에 리스트뷰,그리드뷰 선택할 수 있는 버튼 중에 하나를 클릭하면,
기존의 프래그먼트1의 인스턴스객체를 사용하여 프래그먼트1 안에 존재하는 메소드인 changeView();를 실행하였다.
changeView();는 리스트뷰, 그리드뷰를 전환하는 메소드이다.
그런데 여기서 문제는,
화면이 센서에 의해 가로,세로 모드로 변경이 되는데,
세로 모드로 보다가 가로모드로 변경하면 onDestroy가 되고 onCreate가 된다.
onDestroy, onCreate가 되면서 기존에 생성했던 인스턴스객체가 날아가는것 같다.
여기서 하단의 리스트,그리드뷰를 체인지하는 버튼을 누르면 새로 인스턴스객체를 생성하면서 changeView();를 호출하는 것 같다.
기 생성된 인스턴스 객체가 아닌, 새로 인스턴스 객체를 생성하면 listView gridView의 아이디를 찾을수 없다(NullPointExeption에러가 난다.)