J'utilise Android Studio, lorsque j'utilise TextView dans mon application de mise en page qui ferme l'affichage de l'erreur
Android.view.InflateException: Binary XML file line #26: Error inflating class Android.widget.TextView
at Android.view.LayoutInflater.createView(LayoutInflater.Java:633)
at com.Android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.Java:55)
at Android.view.LayoutInflater.onCreateView(LayoutInflater.Java:682)
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:741)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:806)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:504)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:414)
at com.SubFragment.onCreateView(SubFragment.Java:20)
at Android.support.v4.app.Fragment.performCreateView(Fragment.Java:1786)
at Android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.Java:947)
at Android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.Java:1126)
at Android.support.v4.app.BackStackRecord.run(BackStackRecord.Java:739)
at Android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.Java:1489)
at Android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.Java:486)
at Android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.Java:141)
at Android.support.v4.view.ViewPager.populate(ViewPager.Java:1073)
at Android.support.v4.view.ViewPager.populate(ViewPager.Java:919)
at Android.support.v4.view.ViewPager.onMeasure(ViewPager.Java:1441)
at Android.view.View.measure(View.Java:17430)
at Android.widget.LinearLayout.measureVertical(LinearLayout.Java:875)
at Android.widget.LinearLayout.onMeasure(LinearLayout.Java:613)
at Android.view.View.measure(View.Java:17430)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:5463)
at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:430)
at Android.view.View.measure(View.Java:17430)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:5463)
at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:430)
at Android.view.View.measure(View.Java:17430)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:5463)
at Android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.Java:1436)
at Android.widget.LinearLayout.measureVertical(LinearLayout.Java:722)
at Android.widget.LinearLayout.onMeasure(LinearLayout.Java:613)
at Android.view.View.measure(View.Java:17430)
at Android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.Java:851)
at Android.view.View.measure(View.Java:17430)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:5463)
at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:430)
at Android.view.View.measure(View.Java:17430)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:5463)
at Android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.Java:1436)
at Android.widget.LinearLayout.measureVertical(LinearLayout.Java:722)
at Android.widget.LinearLayout.onMeasure(LinearLayout.Java:613)
at Android.view.View.measure(View.Java:17430)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:5463)
at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:430)
at Android.view.View.measure(View.Java:17430)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:5463)
at Android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.Java:1436)
at Android.widget.LinearLayout.measureVertical(LinearLayout.Java:722)
at Android.widget.LinearLayout.onMeasure(LinearLayout.Java:613)
at Android.view.View.measure(View.Java:17430)
at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:5463)
at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:430)
at com.Android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.Java:2560)
at Android.view.View.measure(View.Java:17430)
et ici dans ma classe de fragment
public class SubFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_homescreen, container, false);// getting error here
return rootView;
}
}
Code XML:
<LinearLayout
Android:layout_margin="10dp"
Android:layout_width="match_parent"
Android:orientation="vertical"
Android:gravity="center_vertical|center_horizontal"
Android:layout_height="0dp"
Android:layout_weight="1"
Android:background="@drawable/offers">
<ImageView
Android:id="@+id/imageButtonOffers"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
Android:src="@drawable/offers_icon" />
<TextView
Android:id="@+id/textViewOffers"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_below="@+id/imageButtonOffers"
Android:layout_centerHorizontal="true"
Android:layout_marginTop="5dp"
Android:gravity="center_horizontal"
Android:text="Offer"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:textColor="@color/white"
Android:textSize="15sp" />
</LinearLayout>
ce code fonctionne bien avec Eclipse. seul problème lorsque j'essaie de travailler dans Studio
Android:background="@drawable/offers"
j'espère que les offres sont image et son plus grand que l'écran alors remplacez par un code de couleur n essayez
Comme ça
Android:background="#ff0000"
esperons que ça marche..
vérifier cela aussi
modifier:
enlever cette ligne
Android:textAppearance="?android:attr/textAppearanceMedium"
J'ai nettoyé votre XML et ajouté le namespace:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_margin="10dp"
Android:layout_weight="1"
Android:background="@drawable/offers"
Android:gravity="center_vertical|center_horizontal"
Android:orientation="vertical" >
<ImageView
Android:id="@+id/imageButtonOffers"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/offers_icon" />
<TextView
Android:id="@+id/textViewOffers"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:gravity="center_horizontal"
Android:text="Offer"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:textColor="@color/white"
Android:textSize="15sp" />
</LinearLayout>
Comme vous utilisez un LinearLayout, les paramètres tels que "Android: layout_below" ou "Android: layout_centerHorizontal" ne sont pas invalides.
J'ai aussi rencontré cette erreur.
Je l'ai résolu en recréant simplement le nouveau fichier .xml
contenant TextView
. Dans mon cas, l'erreur était la version xml (v21\abc.xml) . Le code fonctionnait bien dans la version Android 6(Marshmallow) plutôt que de générer une erreur lors de l'exécution sous Android version 4.4 (KitKat).
Je suis confronté au même problème . Assurez-vous de ne pas avoir
tools:targetApi="Lollipop"
dans aucun de vos modèles, au lieu de deux, l'un sous la variable layout
, ajoutez l'autre sous le dossier layout-v21
.
Il semble que les anciennes versions d’Android ne prennent pas en charge les balises telles que,
Android:background="@drawable/rounded_corner"
Android:textSize="?android:textAppearanceMedium"
Dans ce cas, supprimez-le du fichier XML et essayez de charger les attributs à partir du code Java ou Kotlin (de préférence dans une clause try ... catch ou if ... else).
J'espère que ça aide