2016-09-30 2 views
0

질문을 중복으로 표시하기 전에 이미 다른 답변을 확인했지만 아무 것도 효과가 없었습니다. 응용 프로그램은 Android> = 5.0에서 작동하지만 Android 4.4.2 및 다른 Android 4.x 장치에서는 실패합니다.Android 4.X에서만 InflateException

이 충돌이 일어나고있는 라인이다 :

@Override 
    public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
    { 
     View itemView = LayoutInflater.from(context).inflate(itemLayout, parent, false); 
     .......................... 

build.gradle는

android { 
    compileSdkVersion 23 
    buildToolsVersion ANDROID_BUILD_TOOLS 

defaultConfig { 
    minSdkVersion 16 
    targetSdkVersion ANDROID_TARGET_SDK 
....................... 
} 


dependencies { 
compile 'com.android.support:appcompat-v7:23.1.0' 
compile 'com.android.support:design:23.1.0' 
compile 'com.android.support:recyclerview-v7:23.1.0' 
compile 'com.github.bumptech.glide:glide:3.5.2' 
....................... 
} 

스택 트레이스

android.view.InflateException: Binary XML file line #1: Error inflating class <unknown> 
                     at android.view.LayoutInflater.createView(LayoutInflater.java:620) 
                     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                     at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
                     at android.view.LayoutInflater.inflate(LayoutInflater.java:469) 
                     at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                     at com.dyve.counting.FileExplorer.RecyclerAdapter.onCreateViewHolder(RecyclerAdapter.java:54) 
                     at com.dyve.counting.FileExplorer.RecyclerAdapter.onCreateViewHolder(RecyclerAdapter.java:18) 
                     at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5223) 
                     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4449) 
                     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4359) 
                     at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961) 
                     at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:438) 
                     at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333) 
                     at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:562) 
                     at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:171) 
                     at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2900) 
                     at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071) 
                     at android.view.View.layout(View.java:14858) 
                     at android.view.ViewGroup.layout(ViewGroup.java:4646) 
                     at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1037) 
                     at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:747) 
                     at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42) 
                     at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1133) 
                     at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:760) 
                     at android.view.View.layout(View.java:14858) 
                     at android.view.ViewGroup.layout(ViewGroup.java:4646) 
                     at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1043) 
                     at android.view.View.layout(View.java:14858) 
                     at android.view.ViewGroup.layout(ViewGroup.java:4646) 
                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
                     at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
                     at android.view.View.layout(View.java:14858) 
                     at android.view.ViewGroup.layout(ViewGroup.java:4646) 
                     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1673) 
                     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527) 
                     at android.widget.LinearLayout.onLayout(LinearLayout.java:1436) 
                     at android.view.View.layout(View.java:14858) 
                     at android.view.ViewGroup.layout(ViewGroup.java:4646) 
                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
                     at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
                     at android.view.View.layout(View.java:14858) 
                     at android.view.ViewGroup.layout(ViewGroup.java:4646) 
                     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1673) 
                     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527) 
                     at android.widget.LinearLayout.onLayout(LinearLayout.java:1436) 
                     at android.view.View.layout(View.java:14858) 
                     at android.view.ViewGroup.layout(ViewGroup.java:4646) 
                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
                     at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
                     at android.view.View.layout(View.java:14858) 
                     at android.view.ViewGroup.layout(ViewGroup.java:4646) 
                     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2035) 
                     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1792) 
                     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1047) 

XML 파일 :

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" > 

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/coordinator_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/app_bar_height" 
     android:theme="@style/ThemeOverlay.AppCompat.ActionBar" > 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@color/primary_color" 
      app:expandedTitleMarginStart="@dimen/title_margin" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" > 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?actionBarSize" 
       app:contentInsetStart="@dimen/title_margin" 
       app:layout_collapseMode="pin" 
       android:background="@color/primary_color"/> 

     </android.support.design.widget.CollapsingToolbarLayout> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clipToPadding="false" 
     android:paddingBottom="48dp" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

</android.support.design.widget.CoordinatorLayout> 

XML 파일의 첫 번째 줄은 다음과 같습니다 <android.support.v4.widget.DrawerLayout

나는 이런 일이 그것은 나를 미치게 왜 알아낼 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.

+0

itemLayout이란 무엇입니까? –

+0

@ Code-Apprentice 정수입니다. 전체 기능으로 질문을 편집했습니다. –

+0

int가 아닌 정수형 인 이유는 무엇입니까? 당신은 어디에서 가치를 설정합니까? –

답변

1

문제가 무엇인지 알아내는 바보 같은 2 일을 보내고 난 그 원인을 알아 냈습니다. : xml 드로어 블에서 색상에 대한 참조로 속성을 사용합니다. API < 21에서는 attrs를 사용하여 xml 드로어 블에서 색상을 지정할 수 없습니다. 따라서 유일한 방법은 색상 자원 (@ color/YOURS_COLOR)에 대한 참조를 사용하거나 #RGB 형식을 사용하는 것입니다. 따라서 테마에 따라 색상이있는 xml 드로어 블을 사용하려면 각 테마에 드로어 블을 만들어야합니다.

해결책 : 누군가가 그의 예외를 만난다면, 오류 메시지가 더 명확한 곳이기 때문에 변수 창에서 오류의 원인을 확인해야합니다.

상대 레이아웃의 배경을 @ drawable/selectable_background.xml에서 다른 색으로 바 꾸었습니다. 이제는 모든 것이 잘 작동합니다. enter image description here

관련 문제