Dans une version récente de mon application, j'ai ajouté proguard. Une erreur bizarre a commencé à apparaître:Est-ce que proguard réduit mes constantes?
Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'java.lang.String com.siplay.myapp.b.e.e.b()' on a null object reference
L'erreur est déclenchée dans cette ligne:
public boolean isVideo() {
return Media.MEDIA_TYPE_VIDEO.equals(mImage.getType());
}
MEDIA_TYPE_VIDEO
est une constante et est déclarée comme ceci:
public class Media implements Parcelable {
...
public static final String MEDIA_TYPE_VIDEO = "video";
...
@Retention(RetentionPolicy.SOURCE)
@StringDef({Media.MEDIA_TYPE_VIDEO, Media.MEDIA_TYPE_PHOTO, Media.MEDIA_TYPE_THUMB})
public @interface MediaTypes {}
...
public void setType(@MediaTypes String type) {
...
}
Je lis Dans beaucoup de messages, Proguard ne joue pas avec les déclarations de constantes. Cependant, il doit s'agir de la constante déformée ou de l'objet mImage
. Le stacktrace me dit que ce NPE est déclenché juste après que j'initialiser les vues:
public class MyFragment extends Fragment {
...
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
mImage = savedInstanceState.getParcelable(Constants.BUNDLE_IMAGE);
...
}
mVideoLoader.setVisibility(View.GONE);
if (isVideo()) { //HERE
...
}
...
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable(Constants.BUNDLE_IMAGE, mImage);
...
}
}
Peut-être que ce qui se passe parce que j'accro de onActivityCreated?
Ok. Je vais l'essayer. Je vous ferai savoir si cela le corrige. – 4gus71n
est-ce que cela fonctionne? –
Tout va bien jusqu'ici – 4gus71n