2014-12-17 2 views
0

v14를 타겟팅하고 기본 Activity 및 Fragment 클래스를 사용할 때 제대로 작동하는 ActionBar 탭, ViewPager 및 FragmentPagerAdapter가있는 Activity를 사용하는 앱이 있습니다. 최근에 AppCompat 테마로 v21을 대상으로 지정하기 위해이 파일을 업데이트했으며 Support.v4 버전의 Fragment 및 관련 클래스와 함께 ActionBarActivity로 수정해야했습니다. 이제 탭 전환을 포함하여 내부적으로 작동하는 것으로 보이지만 화면의 영역은 비어 있습니다.ViewPager가 그려지지 않습니다

중단 점을 설정하면 탭을 누르거나 화면을 스 와이프하여 탭을 전환하는 경우를 포함하여 모든 조각의 라이프 사이클 대체 메소드가 예상대로 호출됩니다. 내 조각 중 하나는 사용자 정의보기를 사용하며,보기가 정상적으로 작성되었지만 도면 메서드-onMeasure 및 onDraw-은 결코으로 호출되지 않습니다. ViewPager가 뷰를 그리지 않고 뷰를 전환하는 것과 같습니다.

중단 점을 조금 더 자세히 살펴보면서 ViewPager 구조를 살펴본 결과 모든 부분이 페이징 된 객체 배열에 있고 현재 탭 집합의 뷰 계층 구조가 있습니다. 그 아이 뷰 배열 높이와 너비도 내가 기대할 것입니다.

실제로 화면의 뷰를 그리는 단계를 제외하고는 스 와이프 제스처를 포함하여 모두 "작동 중"이라는 것을 놓칠 수있는 것은 무엇입니까?


업데이트 : 기본 조각을 사용하여 내 원래의 코드로 복귀 에서, V4의 ViewPager 및 V13의 FragmentPageAdapter하지만,이 액션 바 탭을 제거하고 관련 클래스는 단지 그림에서 그것을 얻을. 그것은 항상 Theme.Holo 테마와 함께 모든 것이 완벽하게 작동했습니다.

그런 다음 Fragment 및 관련 클래스와 필요한 v4 버전의 FragmentPageAdapter에 대한 v4 지원을 사용하기 위해 "간단한"변경을 수행했습니다. 이로 인해 내 조각이 표시되어야하는 빈 화면이 생겼고 다시 ViewPager 콜백을 따르고 뷰간에 스 와이프 할 수있었습니다.

그래서 ActionBar 탭과 관련이 없으며 AppCompat 테마와 관련이 없습니다. 그리고이 중 어느 것도 바뀌지 않았기 때문에 내 조각이나 그들의 견해에는 아무런 문제가 없습니다.

+0

여기에 코드를 입력하십시오. 너비와 높이가 모두 정확하고 가시성이 맞습니까? – Nasir

+0

불행히도, 이것은 매우 크고 복잡한 앱이며 이에 대한 다양한 지원 코드가 흩어져 있고 추출 및 게시하기가 어렵습니다. 그러나 다양한 지원 라이브러리 클래스를 사용하기 전에 모든 것이 작동했기 때문에 뷰가 정확하다고 확신합니다. – gordonwd

답변

0

내 실수를 발견했습니다. 꽤 오래 전에 조각 코드를 작성할 때 조각 클래스의 메서드를 재정의했다는 것을 알지 못해서 getView() 메서드를 직접 작성했습니다. 네이티브 프래그먼트를 사용할 때, 프래그먼트와 동일한 프래그먼트 루트 뷰를 반환했기 때문에이 방법이 효과적이었습니다. 그러나 fragment의 support.v4 구현은 onCreateView에서 반환 된 뷰를 자체 제작의 특수 FrameLayout으로 둘러싼다고해서 getView가 반환합니다. 그래서 그것을 오버라이드하여 ViewPager가 보았던 뷰와 일치하지 않는 뷰를 되돌려 놓았습니다.

처음에 중복 된 getView 메소드를 제거하면 즉시 문제가 해결되었습니다.

관련 문제