2017-10-27 54 views
12

Podążam za kursem Audacity i postanowiłem wpisać cały kod, ale wtedy napotkam błąd, gdy próbuję uruchomić aplikację .android.view.InflateException: Binarna linia pliku XML nr 0: Błąd pompowania klasy Przycisk

pojawia się następujący błąd:

 10-27 19:17:41.871 26679-26679/com.example.vhuhwavho.friendlychat W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41bbec08) 
    10-27 19:17:41.871 26679-26679/com.example.vhuhwavho.friendlychat E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.example.vhuhwavho.friendlychat, PID: 26679 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.vhuhwavho.friendlychat/com.example.vhuhwavho.friendlychat.MainActivity}: android.view.InflateException: Binary XML file line #0: Error inflating class Button 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2334) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) 
    at android.app.ActivityThread.access$900(ActivityThread.java:169) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:146) 
    at android.app.ActivityThread.main(ActivityThread.java:5487) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class Button 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:719) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
    at com.example.vhuhwavho.friendlychat.MainActivity.onCreate(MainActivity.java:42) 
    at android.app.Activity.performCreate(Activity.java:5451) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)  
    at android.app.ActivityThread.access$900(ActivityThread.java:169)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:146)  
    at android.app.ActivityThread.main(ActivityThread.java:5487)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)  
    at dalvik.system.NativeStart.main(Native Method)  
    Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x1 
    at android.content.res.TypedArray.getColor(TypedArray.java:327) 
    at android.support.v7.widget.TintTypedArray.getColor(TintTypedArray.java:163) 
    at android.support.v7.widget.ThemeUtils.getThemeAttrColor(ThemeUtils.java:65) 
    at android.support.v7.widget.AppCompatDrawableManager.createDefaultButtonColorStateList(AppCompatDrawableManager.java:584) 
    at android.support.v7.widget.AppCompatDrawableManager.getTintList(AppCompatDrawableManager.java:536) 
    at android.support.v7.widget.AppCompatBackgroundHelper.loadFromAttributes(AppCompatBackgroundHelper.java:53) 
    at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:74) 
at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:67) 
    at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:109) 
    at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024) 
    at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:690) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)  
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)  
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)  
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)  
    at com.example.vhuhwavho.friendlychat.MainActivity.onCreate(MainActivity.java:42)  
    at android.app.Activity.performCreate(Activity.java:5451)  
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)  
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)  
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)  
    at android.app.ActivityThread.access$900(ActivityThread.java:169)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:146)  
    at android.app.ActivityThread.main(ActivityThread.java:5487)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)  
    at dalvik.system.NativeStart.main(Native Method)  
    10-27 19:17:46.696 26679-26679/com.example.vhuhwavho.friendlychat I/Process: Sending signal. PID: 26679 SIG: 9                  

oto główne zajęcie:

package com.example.vhuhwavho.friendlychat; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.InputFilter; 
import android.text.TextWatcher; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ListView; 
import android.widget.ProgressBar; 

import java.util.ArrayList; 
import java.util.List; 

public class MainActivity extends AppCompatActivity { 

    private static final String TAG = "MainActivity"; 

    public static final String ANONYMOUS = "anonymous"; 
    public static final int DEFAULT_MSG_LENGTH_LIMIT = 1000; 

    private ListView mMessageListView; 
    private MessageAdapter mMessageAdapter; 
    private ProgressBar mProgressBar; 
    private ImageButton mPhotoPickerButton; 
    private EditText mMessageEditText; 
    private Button mSendButton; 

    private String mUsername; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mUsername = ANONYMOUS; 

     // Initialize references to views 
     mProgressBar = (ProgressBar) findViewById(R.id.progressBar); 
     mMessageListView = (ListView) findViewById(R.id.messageListView); 
     mPhotoPickerButton = (ImageButton) findViewById(R.id.photoPickerButton); 
     mMessageEditText = (EditText) findViewById(R.id.messageEditText); 
     mSendButton = (Button) findViewById(R.id.sendButton); 

     // Initialize message ListView and its adapter 
     List<FriendlyMessage> friendlyMessages = new ArrayList<>(); 
     mMessageAdapter = new MessageAdapter(this, R.layout.item_message, friendlyMessages); 
     mMessageListView.setAdapter(mMessageAdapter); 

     // Initialize progress bar 
     mProgressBar.setVisibility(ProgressBar.INVISIBLE); 

     // ImagePickerButton shows an image picker to upload a image for a message 
     mPhotoPickerButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       // TODO: Fire an intent to show an image picker 
      } 
     }); 

     // Enable Send button when there's text to send 
     mMessageEditText.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
      } 

      @Override 
      public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
       if (charSequence.toString().trim().length() > 0) { 
        mSendButton.setEnabled(true); 
       } else { 
        mSendButton.setEnabled(false); 
       } 
      } 

      @Override 
      public void afterTextChanged(Editable editable) { 
      } 
     }); 
     mMessageEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(DEFAULT_MSG_LENGTH_LIMIT)}); 

     // Send button sends a message and clears the EditText 
     mSendButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       // TODO: Send messages on click 

       // Clear input box 
       mMessageEditText.setText(""); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main_menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     return super.onOptionsItemSelected(item); 
    } 
} 

Oto activity_main.xml w @layout:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.vhuhwavho.friendlychat.MainActivity"> 

    <ListView 
     android:id="@+id/messageListView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/linearLayout" 
     android:stackFromBottom="true" 
     android:divider="@android:color/transparent" 
     android:transcriptMode="alwaysScroll" 
     tools:listitem="@layout/item_message"/> 

    <LinearLayout 
     android:id="@+id/linearLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:orientation="horizontal"> 

     <ImageButton 
      android:id="@+id/photoPickerButton" 
      android:layout_width="36dp" 
      android:layout_height="36dp" 
      android:background="@android:drawable/ic_menu_gallery" /> 

     <EditText 
      android:id="@+id/messageEditText" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:layout_weight="1" /> 

     <Button 
      android:id="@+id/sendButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom" 
      android:enabled="false" 
      android:text="@string/send_button_label"/> 

    </LinearLayout> 

    <ProgressBar 
     android:id="@+id/progressBar" 
     style="?android:attr/progressBarStyleLarge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true"/> 
</RelativeLayout> 

oto item_message.xml w @layout:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="@dimen/activity_horizontal_margin" 
       android:layout_marginStart="@dimen/activity_horizontal_margin" 
       android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/photoImageView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" /> 

    <TextView 
     android:id="@+id/messageTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="0" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     tools:text="Message" /> 

    <TextView 
     android:id="@+id/nameTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="0" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     tools:text="Name" /> 

</LinearLayout> 

Oto button_selector.xml w @drawale:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="#999999" android:state_enabled="false"/> 
    <item android:color="@color/colorAccent" android:state_enabled="true"/> 
</selector> 

Oto colors.xml w @values:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="colorPrimary">#FF9800</color> 
    <color name="colorPrimaryDark">#E65100</color> 
    <color name="colorAccent">#2E7D32</color> 
    <color name="colorTitle">#ffffff</color> 
</resources> 

oto strings.xml w @values:

<resources> 
    <string name="app_name">Friendly Chat</string> 
    <string name="sign_out">Sign Out</string> 
    <string name="send_button_label">Send</string> 
</resources> 

Oto styles.xml w @values:

<resources xmlns:tools="http://schemas.android.com/tools"> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 

     <!--<item name="android:colorButtonNormal">@drawable/button_selector</item>--> 
     <item name="colorButtonNormal">@drawable/button_selector</item> 
     <item name="android:buttonStyle">@style/FriendlyButtonStyle</item> 
    </style> 

    <style name="FriendlyButtonStyle" parent="Widget.AppCompat.Button"> 
     <item name="android:textColor">@color/colorTitle</item> 

    </style> 
</resources> 

oto menu.xml w @menu:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/sign_out_menu" 
     android:title="@string/sign_out" 
     app:showAsAction="never"/> 
</menu> 

Oto dimens.xml w @values:

Oto (w820dp) dimens.xml w @values:

<resources> 
    <!-- Example customization of dimensions originally defined in res/values/dimens.xml 
     (such as screen margins) for screens with more than 820dp of available width. This 
     would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> 
    <dimen name="activity_horizontal_margin">64dp</dimen> 
</resources> 

Proszę mi pomóc rozwiązać problem.

+0

Co to jest linia 42, "MainActivity.java: 42'? Ponieważ w opublikowanej klasie 'MainActivity' znajduje się wiersz:' mUsername = ANONYMOUS; 'co jest nieistotne dla błędu – pleft

+0

42. setContentView (R.layout.activity_main); – Yeezus

+0

Cóż, w twoim opublikowanym kodzie jest to linia 40, więc brakuje 2 linii, czy możesz zaktualizować? – pleft

Odpowiedz

6

wybór przycisku jest przyczyną problemu. Jeśli przeczytasz resztę wyjątku, zostanie wymieniona przyczyna źródłowa .. ponieważ identyfikatora zasobu nie można znaleźć!

trzeba zmienić button_selector.xml od:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="#999999" android:state_enabled="false"/> 
    <item android:color="@color/colorAccent" android:state_enabled="true"/> 
</selector> 

do:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="#999999" android:state_enabled="false"/> 
    <item android:drawable="@color/colorAccent" android:state_enabled="true"/> 
</selector> 

i będzie działać dobrze ISA.

+0

Nadal otrzymywanie błędu – Yeezus

+0

jest tym samym błędem? –

+0

naprawiono, ręcznie odbudowując aplikację. – Yeezus

0

Może to pomoże ktoś> Mam podobną katastrofę

InflateException: Binary XML file line #0: Error inflating class EditText

w Androidzie 8.0 i 8.1 w wersji apk z powodu czcionek xml ponieważ nie korzystałem z najnowszych bibliotek wsparcia, aktualizuję wersję biblioteki wsparcia i jest ona naprawiona.

xml mający

<EditText 
     android:id="@+id/editEmail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:fontFamily="@font/sanfranciscodisplay_medium" 
     android:hint="@string/enter_email_address" 
     android:lines="1" 
     android:inputType="textEmailAddress" 
     android:layout_centerHorizontal="true"/> 

Moi Gradle configs

BUILD_TOOLS_VER = '26.0.2' 

TARGET_SDK_VER = 26 
MIN_SDK_VER = 19 

SUPPORT_LIBS_VER = '26.1.0' -> '27.0.2' (fix here) 
GOOGLE_SERVICES_VER = '11.4.0' -> '11.8.0' 
1

w moim przypadku plików XML w tle gdzie nie wewnątrz jednego katalogu rozciągliwej. Dodałem je wszystkie w folderze hdpi do rysowania, a następnie odbuduję projekt. To rozwiązało ten problem.

To zadziałało dla mnie!

+0

Nie zapewnia to odpowiedzi na pytanie. Gdy masz już wystarczającą [reputację] (https://stackoverflow.com/help/whats-reputation), będziesz mógł [komentować dowolny wpis] (https://stackoverflow.com/help/privileges/comment); zamiast tego [dostarczaj odpowiedzi, które nie wymagają wyjaśnień od pytającego] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-zamiast). - [Z recenzji] (/ recenzja/niskiej jakości-posts/19032629) – JEY

+0

Ale najważniejsze, że to rozwiązanie bardzo mi pomaga. :) – TyeolRik

Powiązane problemy