【问题标题】:How to find an error when Logcat doesn't show any of your classes?当 Logcat 不显示任何类时如何查找错误?
【发布时间】:2015-09-18 15:51:56
【问题描述】:

使用 Android Studio 开发我的应用时,我遇到了运行时错误,但 Logcat 没有在我的任何类中显示该错误。

发生这种情况时如何确定问题出在哪里/哪段代码失败了?

例子:

09-17 13:29:23.420  17656-17656/com.mycompany.android.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
        at android.support.v4.app.Fragment.setUserVisibleHint(Fragment.java:860)
        at android.support.v4.app.FragmentStatePagerAdapter.setPrimaryItem(FragmentStatePagerAdapter.java:152)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1103)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:951)
        at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2041)
        at android.view.View.dispatchTouchEvent(View.java:7320)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2179)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1914)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2185)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1886)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2185)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1886)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2185)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1886)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2185)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1886)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2185)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1886)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2185)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1886)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2038)
        at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1490)
        at android.app.Activity.dispatchTouchEvent(Activity.java:2471)
        at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
        at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1986)
        at android.view.View.dispatchPointerEvent(View.java:7514)
        at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3679)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3623)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4798)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4777)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4873)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:208)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:125)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5751)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
        at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • Fragment.setUserVisibleHint(Fragment.java:860) 这就是问题
  • 知道如何解决吗?
  • 显示设置可见性的代码
  • NullPointerException 表示其获取空值

标签: android debugging android-logcat


【解决方案1】:

我建议将代码封装在 isVisible() 方法中的片段中。例如,

//do something 

if(isVisible()) {
    //do something
}

【讨论】:

  • 我已经在做类似的事情了。我已经为“isVisible()”更改了“getActivity!=null”,因为我觉得这是对代码的改进。谢谢你。
  • 我想补充一点,我正在做应用程序的堆栈跟踪,似乎错误在这段代码中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 2016-02-11
相关资源
最近更新 更多