Phate01 Phate01 - 1 month ago 7
Java Question

findViewById() may produce NullPointerException

I have many of these calls:

(ListView) getView().findViewById(R.id.main_list_view);
(TextView) getView().findViewById(R.id.items_no);
....


and AndroidStudio tells me that they may procude a
NullPointerException
:


Method invocation
getView().findViewById(R.id.main_list_view)
may
produce
java.lang.NullPointerException
less... (Ctrl+F1)

This inspection analyzes method control and data flow to report possible
conditions that are always true or false, expressions whose value is
statically proven to be constant, and situations that can lead to
nullability contract violations.

Variables, method parameters and
return values marked as
@Nullable
or
@NotNull
are treated as nullable
(or not-null, respectively) and used during the analysis to check
nullability contracts, e.g. report possible
NullPointerException

errors.

More complex contracts can be defined using
@Contract

annotation, for example:

@Contract("_, null -> null")
— method returns null if its second argument is null
@Contract("_, null -> null; _, !null -> !null")
— method returns null if its second argument is null and not-null otherwise

@Contract("true -> fail")
— a typical
assertFalse
method which throws an exception if true is passed to it

The inspection can be configured to use custom
@Nullable

@NotNull
annotations (by default the ones from annotations.jar will be used)


Luckily everithing works, but is there an improvement to this code I can made?

Answer Source

This is a known issue in android.support.v7.app.AppCompatActivity and it has been fixed in v24.

https://code.google.com/p/android/issues/detail?id=203345

You won't have any issues with android.support.v4.app.FragmentActivity or android.app.Activity