检查NullPointer setVisibility情况

时间:2018-11-22 12:10:03

标签: android android-layout nullpointerexception

在崩溃日志中,我偶尔看到以下内容:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference
   at AbstractFragment.init(Unknown Source)
   at ExtendingFragment.onEnabled(Unknown Source)
   at ExtendingFragment.enableScrolling(Unknown Source)
   at ExtendingFragment$7.onClick(Unknown Source)
   at android.view.View.performClick(View.java:5210)

...

那么容易,对吧?问题肯定在AbstractFragment.init中,但是:

void init(MyPOJO myPOJO, View.OnClickListener aListener, View.OnClickListener bListener,
                    boolean stored) {
    this.myPOJO= myPOJO;
    this.aListener = aListener;
    this.bListener = bListener;
    this.stored = stored;
    this.inflater = LayoutInflater.from(getActivity());

    used = new SparseBooleanArray();
    verticalMargin = getResources().getDimensionPixelSize(R.dimen.article_spacing_vertical);
    horizontalMargin = getResources().getDimensionPixelSize(R.dimen.article_spacing_horizontal);
    if (samsung_4_4_have_bug == null) //static
        samsung_4_4_have_bug = Build.VERSION.SDK_INT == 19 &&
                Build.MANUFACTURER.toLowerCase(Locale.getDefault()).contains("samsung");
}

此处有任何setVisibility呼叫,实际上这只是一个“设定者”。所以也许在ExtendingFragment.onEnabled中?让我们看看:

@Override
public void onEnabled(int pendingId) {
    if (pendingId == localId && someView != null)
        someView.post(() -> someView.callOnClick());
}

也没有setVisibility ...在附加的OnClickListener内没有setVisibility,也没有AbstractFragment.init呼叫...

ExtendingFragment.enableScrolling内部,我正在准备几个侦听器,但没有setVisibility进行任何呼叫

ExtendingFragment$7.onClick建议将此NullPointer放在某个OnClick之后,但是我已经检查了两个片段层中的所有OnClickListeners,您将永远不会猜测...没有setVisibility通话中的任何一个...

那么如何解决呢?我正在使用一些visibility开关,但是没有在堆栈方法中列出的任何开关中使用。怎么检查?

0 个答案:

没有答案