2017-06-25 4 views
0

J'ai un Snackbar, qui est censé montrer au cas où aucun centre de villégiature n'est trouvé après avoir fait une demande de données à un serveur. Chaque fois que le Snackbar doit montrer que je reçois cette exception:InflateException lorsque j'essaie d'utiliser un Snackbar

java.lang.RuntimeException: An error occurred while executing doInBackground() 
                   at android.os.AsyncTask$3.done(AsyncTask.java:309) 
                   at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
                   at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
                   at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
                   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                   at java.lang.Thread.run(Thread.java:818) 
                   Caused by: android.view.InflateException: Binary XML file line #41: Binary XML file line #41: Error inflating class <unknown> 
                   at android.view.LayoutInflater.inflate(LayoutInflater.java:539) 
                   at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                   at android.support.design.widget.Snackbar.make(Snackbar.java:143) 
                   at com.tripoffbeat.Result$LoadAllResorts.doInBackground(Result.java:565) 
                   at com.tripoffbeat.Result$LoadAllResorts.doInBackground(Result.java:432) 
                   at android.os.AsyncTask$2.call(AsyncTask.java:295) 
                   at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
                   at java.lang.Thread.run(Thread.java:818)  
                   Caused by: android.view.InflateException: Binary XML file line #41: Error inflating class <unknown> 
                   at android.view.LayoutInflater.createView(LayoutInflater.java:645) 
                   at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
                   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694) 
                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762) 
                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
                   at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
                   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
                   at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
                   at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  
                   at android.support.design.widget.Snackbar.make(Snackbar.java:143)  
                   at com.tripoffbeat.Result$LoadAllResorts.doInBackground(Result.java:565)  
                   at com.tripoffbeat.Result$LoadAllResorts.doInBackground(Result.java:432)  
                   at android.os.AsyncTask$2.call(AsyncTask.java:295)  
                   at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
                   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
                   at java.lang.Thread.run(Thread.java:818)  
                   Caused by: java.lang.reflect.InvocationTargetException 
                   at java.lang.reflect.Constructor.newInstance(Native Method) 
                   at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
                   at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)  
                   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694)  
                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)  
                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)  
                   at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)  
                   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)  
                   at android.view.LayoutInflater.inflate(LayoutInflater.java:515)  
                   at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  
                   at android.support.design.widget.Snackbar.make(Snackbar.java:143)  
                   at com.tripoffbeat.Result$LoadAllResorts.doInBackground(Result.java:565)  
                   at com.tripoffbeat.Result$LoadAllResorts.doInBackground(Result.java:432)  
                   at android.os.AsyncTask$2.call(AsyncTask.java:295)  
                   at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
                   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
                   at java.lang.Thread.run(Thread.java:818)  
                   Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 5: TypedValue{t=0x2/d=0x7f0100b0 a=-1} 
                   at android.content.res.TypedArray.getColorStateList(TypedArray.java:482) 
                   at android.widget.TextView.<init>(TextView.java:1043) 
                   at android.widget.Button.<init>(Button.java:109) 
                   at android.widget.Button.<init>(Button.java:105) 
                   at android.widget.Button.<init>(Button.java:101) 
                   at java.lang.reflect.Constructor.newInstance(Native Method)  
                   at android.view.LayoutInflater.createView(LayoutInflater.java:619)  
                   at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)  
                   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694)  
                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)  
                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)  
                   at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)  
                   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)  
                   at android.view.LayoutInflater.inflate(LayoutInflater.java:515)  
                   at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  
                   at android.support.design.widget.Snackbar.make(Snackbar.java:143)  
                   at com.tripoffbeat.Result$LoadAllResorts.doInBackground(Result.java:565)  
                   at com.tripoffbeat.Result$LoadAllResorts.doInBackground(Result.java:432)  
                   at android.os.AsyncTask$2.call(AsyncTask.java:295)  
                   at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
                   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
                   at java.lang.Thread.run(Thread.java:818)  

Ma classe actuelle étend ListActivity et met en œuvre un ActionBar.

La ligne où il donne une erreur:

pDialog.dismiss(); 
       Snackbar.make(parentLayout, "No resorts found", Snackbar.LENGTH_INDEFINITE) 
         .setAction("CLOSE", new View.OnClickListener() { 
          @Override 
          public void onClick(View view) { 
           Bundle data = getIntent().getExtras(); 
           Intent i = new Intent(Result.this, OptionList.class); 
           i.putExtras(data); 
           setResult(RESULT_OK, getIntent()); 
           finish(); 
          } 
         }) 
         .setActionTextColor(getResources().getColor(android.R.color.holo_blue_dark)) 
         .show(); 

Si je remplace le message avec un Toast Snack-bar, il fonctionne très bien.

XML pour l'activité:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:weightSum="1" 
app:layout_collapseParallaxMultiplier="1.0" 
app:layout_scrollFlags="scroll"> 

<TextView 
    android:id="@+id/textView4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical|center_horizontal" 
    android:paddingBottom="5dp" 
    android:paddingTop="5dp" 
    android:text="All resorts and prices" 
    android:textColor="@android:color/background_dark" 
    android:textSize="20sp" /> 

<ListView 
    android:id="@+id/android:list" 
    android:layout_width="match_parent" 
    android:layout_height="430dp" 
    android:layout_gravity="center_vertical|center_horizontal" 
    android:animateLayoutChanges="true" 
    android:background="@color/cover_overlay" 
    android:choiceMode="multipleChoice" 
    android:footerDividersEnabled="false" 
    android:headerDividersEnabled="false" 
    android:outlineProvider="bounds" 
    android:paddingBottom="10dp" 
    android:paddingEnd="10dp" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:paddingStart="10dp" 
    android:soundEffectsEnabled="true" 
    android:splitMotionEvents="true" /> 

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="center_vertical|center_horizontal" 
    android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_weight="1" 
     android:paddingTop="7dp" 
     android:text="Sort by:" 
     android:textColor="@android:color/background_dark" 
     android:textSize="16sp" /> 

    <HorizontalScrollView 
     android:layout_width="302dp" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="5dp"> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 

      <RadioGroup 
       android:id="@+id/rad" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_weight="1" 
       android:orientation='horizontal'> 

       <RadioButton 
        android:id="@+id/sort_price" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:checked="true" 
        android:text="Price" 
        android:textColor="@android:color/background_dark" /> 

       <RadioButton 
        android:id="@+id/sort_alpha" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:checked="false" 
        android:duplicateParentState="false" 
        android:text="Alphabetically" 
        android:textAlignment="center" 
        android:textColor="@android:color/background_dark" /> 

       <RadioButton 
        android:id="@+id/sort_states" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:checked="false" 
        android:duplicateParentState="false" 
        android:text="State" 
        android:textAlignment="center" 
        android:textColor="@android:color/background_dark" /> 

       <RadioButton 
        android:id="@+id/sort_city" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="Cities" /> 

       <RadioButton 
        android:id="@+id/sort_dist" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="Distance" /> 

      </RadioGroup> 
     </LinearLayout> 
    </HorizontalScrollView> 

</LinearLayout> 

Parent Code de mise en page:

parentLayout = findViewById(android.R.id.content); 

Le Snackbar a parfaitement fonctionné avant ajouté la barre d'action.

Pour cette activité, je suis sur un Theme.Holo.Light.ActionBar manifeste Android:

<activity android:name=".Result" 
     android:launchMode="singleTop" 
     android:theme="@android:style/Theme.Holo.Light.DarkActionBar" 
     android:parentActivityName="com.tripoffbeat.OptionList"/> 

Dans mon styles.xml mon thème est <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">.

+0

votre xml aussi publier –

+0

Fait @quicklearner –

+0

utilisation CoordinatorLayout comme la mise en page de parent, vérifier cet exemple http://www.androidhive.info/2015/09/android-material-design-snackbar-example/ –

Répondre

1

Lorsque Snackbarits content layout gonfle, il cannot inflate a Button de cette mise en page, car il ne dispose pas de trouver ?attr/colorAccent du thème du contexte actuel. Cela arrive, car le thème de votre activité n'est pas un descendant du thème AppCompat.

Ainsi, au lieu de:

android:theme="@android:style/Theme.Holo.Light.DarkActionBar" 

appliquent une appcompatish thème. Suppression de cette ligne du manifeste permettrait de résoudre votre erreur, en supposant que le thème de votre application est Theme.AppCompat.Light.DarkActionBar.

+0

Yess qui le fait! Merci! –