在崩溃日志中,我偶尔看到以下内容:
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
开关,但是没有在堆栈方法中列出的任何开关中使用。怎么检查?