2017-12-08 6 views
0

AppCompat없이 "내비게이션 드로어"를 설정하려고합니다. 오류가 발생했습니다 You need to use a Theme.AppCompat theme (or descendant) with the design library 아이디어가 있습니까?AppCompat 테마가없는 탐색 서랍

I 설정 내`styles.xml로 : 나는 단지 android:theme="@style/AppTheme"

<resources> 
    <!-- Base application theme. --> 
    <style name="AppTheme" parent="@android:style/Theme.Material.Light"> 
     <!-- Customize your theme here. --> 
    </style> 
</resources> 

내의 AndroidManifest.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"> 

    <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"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Hello World!" /> 

    </RelativeLayout> 
    <!-- The navigation drawer --> 
    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_main" 
     app:menu="@menu/activity_main_drawer" /> 
</android.support.v4.widget.DrawerLayout> 

nav_header_main 및 activity_main 서랍 내용이 안드로이드 스튜디오 예 내 MainActivity에서 onCreate 기능에서와 동일합니다 매우 간단합니다 : 내 activity_main.xml

는이

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

내 build.bradle 종속성은 다음과 같습니다 :

dependencies { 
    implementation fileTree(dir: 'libs', include: ['*.jar']) 
    implementation 'com.android.support:support-v13:26.1.0' 
    implementation 'com.android.support:design:26.1.0' 
    testImplementation 'junit:junit:4.12' 
    androidTestImplementation 'com.android.support.test:runner:1.0.1' 
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' 
} 

오류는 :이 유물에서 끌어

12-08 15:11:19.095 16936-16936/? E/AndroidRuntime: FATAL EXCEPTION: main 
                Process: com.xxx.xxx, PID: 16936 
                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxx/com.xxx.xxx.MainActivity}: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class android.support.design.widget.NavigationView 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2684) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751) 
                 at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496) 
                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                 at android.os.Looper.loop(Looper.java:154) 
                 at android.app.ActivityThread.main(ActivityThread.java:6186) 
                 at java.lang.reflect.Method.invoke(Native Method) 
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 
                Caused by: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class android.support.design.widget.NavigationView 
                Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class android.support.design.widget.NavigationView 
                Caused by: java.lang.reflect.InvocationTargetException 
                 at java.lang.reflect.Constructor.newInstance0(Native Method) 
                 at java.lang.reflect.Constructor.newInstance(Constructor.java:430) 
                 at android.view.LayoutInflater.createView(LayoutInflater.java:645) 
                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787) 
                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 
                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:858) 
                 at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
                 at android.view.LayoutInflater.inflate(LayoutInflater.java:518) 
                 at android.view.LayoutInflater.inflate(LayoutInflater.java:426) 
                 at android.view.LayoutInflater.inflate(LayoutInflater.java:377) 
                 at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:412) 
                 at android.app.Activity.setContentView(Activity.java:2415) 
                 at com.xxx.xxx.MainActivity.onCreate(MainActivity.java:24) 
                 at android.app.Activity.performCreate(Activity.java:6684) 
                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751) 
                 at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496) 
                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                 at android.os.Looper.loop(Looper.java:154) 
                 at android.app.ActivityThread.main(ActivityThread.java:6186) 
                 at java.lang.reflect.Method.invoke(Native Method) 
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 
                Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library. 
                 at android.support.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:33) 
                 at android.support.design.widget.NavigationView.<init>(NavigationView.java:104) 
                 at android.support.design.widget.NavigationView.<init>(NavigationView.java:98) 
                 at java.lang.reflect.Constructor.newInstance0(Native Method)  
                 at java.lang.reflect.Constructor.newInstance(Constructor.java:430)  
                 at android.view.LayoutInflater.createView(LayoutInflater.java:645)  
                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)  
                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)  
                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)  
                 at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)  
                 at android.view.LayoutInflater.inflate(LayoutInflater.java:518)  
                 at android.view.LayoutInflater.inflate(LayoutInflater.java:426)  
                 at android.view.LayoutInflater.inflate(LayoutInflater.java:377)  
                 at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:412)  
                 at android.app.Activity.setContentView(Activity.java:2415)  
                 at com.xxx.xxx.MainActivity.onCreate(MainActivity.java:24)  
                 at android.app.Activity.performCreate(Activity.java:6684)  
                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)  
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637)  
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)  
                 at android.app.ActivityThread.-wrap12(ActivityThread.java)  
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496)  
                 at android.os.Handler.dispatchMessage(Handler.java:102)  
                 at android.os.Looper.loop(Looper.java:154)  
                 at android.app.ActivityThread.main(ActivityThread.java:6186)  
                 at java.lang.reflect.Method.invoke(Native Method)  
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)  
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)  

답변

2
implementation 'com.android.support:design:26.1.0' 

아무것도 귀하의 경우 등 appcompat-v7, Theme.AppCompat는, NavigationView이 라이브러리입니다 필요합니다.

NavigationViewmy cross-port of the Design widgets to Theme.Material이 없습니다. AFAIK,이 위젯을 놓고 서랍 내용에 다른 것을 사용해야합니다 (예 : RecyclerView).

DrawerLayout이 아니며,이 필요하지 않으므로 부분은 괜찮습니다. 위에서

+0

나는 당신이 옳다고 생각합니다. styles.xml에서'parent = "Theme.AppCompat.Light.DarkActionBar"'로 전환하면 app 함수가 사용되지만'ActionBar'가 누락됩니다. 어떻게하면 쉽게 "ActionBar"활동을 "쉽게"얻을 수 있습니까? –

+0

@EvrenYurtesen : 당신의 질문은 그 테마를 어떻게 사용하지 않는지에 관한 것입니다. 'Theme.AppCompat'를 기반으로 무언가를 사용하고 싶다면, 무엇보다도'AppCompatActivity'를 상속 받아야합니다. – CommonsWare

0
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 

    <item name="colorPrimary">#873AB0</item> 
    <item name="colorPrimaryDark">#256DA8</item> 
    <item name="colorAccent">#11BCD4</item> 
    <item name="android:textColorPrimary">#212222</item> 
    <item name="android:textColorSecondary">#646464</item> 

</style> 

이 당신을 도와줍니다

 <item name="android:textColorPrimary">#212222</item> 
     <item name="android:textColorSecondary">#646464</item> 

체크 Example

희망을 제거 니펫을.

+0

다른 사람의 답변을 복사/붙여 넣기하고 있습니까? https://stackoverflow.com/questions/30709419/error-inflating-class-android-support-design-widget-navigationview/34511285 질문에서 OP는 AppCompat 테마를 사용 중입니다 ... –

+0

아니요이 답변과 관련 없음 . 도움이된다면 – InsaneCat

+0

AppCompat 테마로 전환하면 모든 것이 잘 작동하기 때문에 전혀 관련이 없습니다. 예를 들어, 내 styles.xml에서'parent = "Theme.AppCompat.Light.DarkActionBar"'을 설정하면 서랍이 제대로 작동합니다. 전혀 관련없는 답변은 질문을 이해하려고 시도해야합니다. AppCompat 테마를 사용하지 않고 문제를 해결할 수 있는지 파악하려고합니다. 당신은 이미 stackoverflow에서 비슷한 질문에 대한 모든 답변을 수색했다고 생각하지 않습니까? :) 그게 당신이 복사/붙여 넣기를 알았던 방식입니다. –