2015-03-30 2 views
2

Y at-il des problèmes lors du gonflement d'un viewstub contenant un fragment? En crashalytics je vois rarementInflate un Viewstub contenant un fragment

Fatal Exception: android.view.InflateException 
Binary XML file line #2: Error inflating class fragment 

Causé par

Caused by java.lang.IllegalStateException 

L'action est déclenchée par un onclick, comme indiqué ci-dessous.

public void openPlayer() { 
    if (mSlidingLayout != null) { 
     if (mSlidingLayout.findViewById(R.id.viewer_stub) != null) { 
      ViewStub stub = (ViewStub) mSlidingLayout.findViewById(R.id.viewer_stub); 
      stub.inflate(); 
     } 
     mSlidingLayout.expandPanel(); 
    } 
} 

Répondre

2

Récemment, j'ai rencontré la même question et je l'ai mise à l'épreuve.

Un fragment à l'intérieur d'un ViewStub fonctionne. La seule différence est que le fragment commencera son cycle de vie lorsque la méthode inflate() est appelée sur ViewStub.


Votre problème se situe dans le contenu du fragment. Juste pour tester J'ai créé un fragment qui entre dans un ViewStub et a lancé un RTE lorsque les vues étaient sur le point d'être créées.

public class UserSetupFragment extends Fragment { 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     System.out.println("Create View"); 
     throw new RuntimeException("Test"); 
    } 

} 

Sur la console, je reçois l'exception suivante:

01-02 06:48:19.260: E/AndroidRuntime(31533): android.view.InflateException: Binary XML file line #6: Error inflating class fragment 

Comme vous pouvez le voir, si les accidents de quelque chose avant votre point de vue est retourné avec succès, vous recevrez un InflateException.

Vous devez déboguer dans la classe de fragments ou publier son code.

+0

Ce problème semble se produire 0,001% du temps dans la nature. Je soupçonne que cela peut être lié à gonfler ne se produit pas instantanément mais je ne suis toujours pas sûr. Merci pour l'info, très intéressant. –