Проверка NullPointer setVisibility - PullRequest
0 голосов
/ 22 ноября 2018

В моем журнале аварий я иногда вижу:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...