В моем журнале аварий я иногда вижу:
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
переключения, но ни в одном из перечисленных методов стека.как это проверить?