0

내 앱의 크래시 틱스 데이터에 FrameLayout.onMeasure()에서 Null 포인터 예외가 발생합니다.ContentFrameLayout.onMeasure getVisibility() 호출 중 NPE

내 응용 프로그램 추적을 로그에 볼 수 없기 때문에 어떤 활동이 중단되고 있는지를 말할 수는 없지만 주 활동은 5 개의 단편이있는 TabLayout + Viewpager로 구성됩니다. 충돌 로그는 다음과 같습니다 :

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getVisibility()' on a null object reference 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:193) 
    at android.support.v7.widget.ContentFrameLayout.onMeasure(SourceFile:135) 
    at android.view.View.measure(View.java:18866) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
    at android.view.View.measure(View.java:18866) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
    at android.view.View.measure(View.java:18866) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
    at android.view.View.measure(View.java:18866) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
    at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2650) 
    at android.view.View.measure(View.java:18866) 
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2104) 
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1220) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1456) 
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1111) 
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6017) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
    at android.view.Choreographer.doFrame(Choreographer.java:606) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:224) 
    at android.app.ActivityThread.main(ActivityThread.java:5526) 
    at java.lang.reflect.Method.invoke(Method.java) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

이이 APPCOMPAT V7 라이브러리의 일부 버그가 될 수 있을까? 또는 Tablayout + Viewpager 조합에 문제가 있습니까?

도움이 될만한 정보가 있으면 감사하겠습니다.

+0

뉴스, Vishy? –

답변

0

로그에서 오류가 분명하다 : 당신은 호출 널 포인터 예외를 던지고 null 객체에 방법에 노력하고있다

Attempt to invoke virtual method 'int android.view.View.getVisibility()' on a null object reference 

.
내 생각에 메서드에서 getVisiblity() 메서드를 사용하여 개체의 가시성을 얻으 려하고 그 개체가 아직 인스턴스화되지 않았기 때문에 (즉, null 참조가 유지됨) 예외가 발생하므로 .

나는 비슷한 케이스를 ViewPager에 가지고 있습니다. 기본적으로, 나는 아직 특정 뷰로 스 와이프/이동하지 않았으며 뷰가 아직 생성되지 않았기 때문에 메서드를 호출하여 응용 프로그램을 중단했습니다.

onMeasure() 부분을 포함하는 코드 스 니펫을 게시하여 디버깅을 도와 줄 수 있습니까?

감사합니다.

+0

리카르도, 귀하의 의견에 감사드립니다! 내 코드에서 onMeasure()를 명시 적으로 호출하지 않지만 시스템이 탭 레이아웃 +보기 호출기를 초기화하려고 할 때 일부 null보기를 전달할 수 있다고 생각합니다. 다음은보기를 초기화하기위한 내 코드의 요지 링크입니다. 어떤 부분이 onMeasure() 메서드를 호출하는지 모르겠습니다. null 개체를 FrameLayout의 onMeasure() 메서드에 전달할 수있는 의심스러운 항목이있는 경우 알려주십시오. https://gist.github.com/vishyrich/014cad13b37cb7896d805d0e1ed9e6b8 – Vishy