2015-06-30 4 views
1

Я попытался интегрировать NaviogationView.Как использовать NavigationView со стандартными темами Android?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    NavigationView navigationView = new NavigationView(this); 
    setContentView(navigationView); 
} 

Но он бросает java.lang.RuntimeException: Failed to resolve attribute at index 0 После этого я попытался добавить android:theme="@style/Theme.AppCompat" в AndroidManifest

<activity android:theme="@style/Theme.AppCompat" android:name="MyActivity" 
        android:label="@string/app_name"> 

И это не откажет. Есть ли решение использовать стандартную тему Android и NavigationView?

Вот полный StackTrace:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapp/com.example.myapp.MyActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class android.support.design.internal.NavigationMenuView 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5254) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class android.support.design.internal.NavigationMenuView 
     at android.view.LayoutInflater.createView(LayoutInflater.java:633) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:482) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
     at android.support.design.internal.NavigationMenuPresenter.getMenuView(NavigationMenuPresenter.java:93) 
     at android.support.design.widget.NavigationView.<init>(NavigationView.java:149) 
     at android.support.design.widget.NavigationView.<init>(NavigationView.java:88) 
     at android.support.design.widget.NavigationView.<init>(NavigationView.java:84) 
     at com.example.myapp.MyActivity.onCreate(MyActivity.java:15) 
     at android.app.Activity.performCreate(Activity.java:5990) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
            at android.app.ActivityThread.access$800(ActivityThread.java:151) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5254) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
Caused by: java.lang.reflect.InvocationTargetException 
     at java.lang.reflect.Constructor.newInstance(Native Method) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
     at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:482) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
            at android.support.design.internal.NavigationMenuPresenter.getMenuView(NavigationMenuPresenter.java:93) 
            at android.support.design.widget.NavigationView.<init>(NavigationView.java:149) 
            at android.support.design.widget.NavigationView.<init>(NavigationView.java:88) 
            at android.support.design.widget.NavigationView.<init>(NavigationView.java:84) 
            at com.example.myapp.MyActivity.onCreate(MyActivity.java:15) 
            at android.app.Activity.performCreate(Activity.java:5990) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
            at android.app.ActivityThread.access$800(ActivityThread.java:151) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5254) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
Caused by: java.lang.RuntimeException: Failed to resolve attribute at index 0 
     at android.content.res.TypedArray.getDrawable(TypedArray.java:747) 
     at android.widget.AbsListView.<init>(AbsListView.java:815) 
     at android.widget.ListView.<init>(ListView.java:151) 
     at android.widget.ListView.<init>(ListView.java:147) 
     at android.support.design.internal.NavigationMenuView.<init>(NavigationMenuView.java:39) 
     at android.support.design.internal.NavigationMenuView.<init>(NavigationMenuView.java:35) 
            at java.lang.reflect.Constructor.newInstance(Native Method) 
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
            at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:482) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
            at android.support.design.internal.NavigationMenuPresenter.getMenuView(NavigationMenuPresenter.java:93) 
            at android.support.design.widget.NavigationView.<init>(NavigationView.java:149) 
            at android.support.design.widget.NavigationView.<init>(NavigationView.java:88) 
            at android.support.design.widget.NavigationView.<init>(NavigationView.java:84) 
            at com.example.myapp.MyActivity.onCreate(MyActivity.java:15) 
            at android.app.Activity.performCreate(Activity.java:5990) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
            at android.app.ActivityThread.access$800(ActivityThread.java:151) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5254) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
+0

Сообщение ваш стиль и полный StackTrace –

+0

Там нет стиля. Я использую стандартный стиль из библиотеки поддержки AppCompat. –

+0

Опубликовать полный stacktrace –

ответ

3

Кажется, что мы единственные, у кого есть это исключение. :) Во всяком случае, есть некоторые важные проблемы, связанные с этой ошибкой. В решении используется NavigationView совместимая тема.

<style name="Theme.YourApplication" parent="Theme.AppCompat.Light.NoActionBar"> 
    ... 
</style> 

И затем использовать этот стиль в AndroidManifest, как это:

<application 
    ... 
    android:theme="@style/Theme.YourApplication"> 
    <activity 
+0

не работал для меня. Я нахожу проблему при запуске приложения в 4.4.4 android, но не в 6.0 – Nacho

0

NavigationView предназначен для использования его вложенными в DrawerLayout. См. Здесь Android Developers Blog для примера некоторых фрагментов.

Смежные вопросы