2016-02-20 6 views
-1

J'essaie d'intégrer un Google Sample App dans ma propre application. The Sample App illustre l'utilisation de l'API Camera2. L'exemple d'application compile et s'exécute très bien. Comme dit, je voudrais utiliser le CameraActivity.java, Camera2BasicFragment.java et AutoFitTextureView.java dans mon App. Cependant, quand je lance mon application, je reçois cette erreur:Android ClassCastException:

java.lang.ClassCastException: android.view.TextureView ne peut pas être jeté à openbook.pub.sypa.view.AutoFitTextureView

L'exception est jeté par cette ligne (en Camera2BasicFragment.onViewCreated):

mTextureView = (AutoFitTextureView) view.findViewById(R.id.texture); 

le AutoFitTextureView est inchangé par rapport à l'application de l'échantillon, et se prolonge à partir de TextureView:

public class AutoFitTextureView extends android.view.TextureView { 

J'ai même copié le fichier build.gradle de l'application Sample vers ma propre application, pour m'assurer que cela dépend des mêmes bibliothèques. J'ai également nettoyé le projet.

Pourquoi j'obtiens cette erreur? Et pourquoi ça marche bien dans l'application Sample de Google?

+0

Évidemment parce que la vue avec texture id n'est pas AutoFitTextureView mais TextureView ... C'est comme si tous les chiens sont des animaux mais pas tous les chiens ... Vous ne pouvez pas lancer un chien si ce n'est pas un chien – Selvin

+0

aboyant le mauvais arbre ... –

Répondre

2

Why do I get this error?

On peut supposer que la mise en page qui gonfle dans view a une TextureView, pas AutoFitTextureView.

And why does it work fine in Google's Sample App?

Parce que layout de l'exemple d'application de Google a un AutoFitTextureView.

+0

Vous avez raison. J'ai oublié le TextureView dans mon fichier de mise en page. Cela, cependant, était une tentative de contourner un problème similaire. Je vais poser une autre question à ce sujet. –