android.view.InflateException与android.support.wear.widget.drawer.WearableDrawerLayout一起使用时出现的异常。

10 浏览
0 Comments

android.view.InflateException与android.support.wear.widget.drawer.WearableDrawerLayout一起使用时出现的异常。

我正在尝试使用这篇Android开发者文档中的示例来实现一个\"Action Drawer\"。项目编译成功,但在加载时立即崩溃。示例应用程序可以运行,我已经尽量几乎原样复制了所有相关部分。有人能解释一下为什么它无法实例化/填充这个类吗?\nxml布局文件上的错误消息:\n

\n以下类无法实例化:\n - android.support.wearable.view.drawer.WearableActionDrawer\n以下类找不到:\n - android.support.wear.widget.drawer.WearableDrawerLayout\n

\n堆栈跟踪:\n

\n08-05 15:57:46.287 3993-3993/com.mendonphoto.abeddes.run2gps E/AndroidRuntime: FATAL EXCEPTION: main\n Process: com.mendonphoto.abeddes.run2gps, PID: 3993\n java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mendonphoto.abeddes.run2gps/com.mendonphoto.run2gps.MainActivity}: android.view.InflateException: Binary XML file line #301: Binary XML file line #301: Error inflating class android.support.wearable.view.drawer.WearableActionDrawer\n at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)\n at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)\n at android.app.ActivityThread.-wrap12(ActivityThread.java)\n at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)\n at android.os.Handler.dispatchMessage(Handler.java:102)\n at android.os.Looper.loop(Looper.java:154)\n at android.app.ActivityThread.main(ActivityThread.java:6119)\n at java.lang.reflect.Method.invoke(Native Method)\n at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)\n Caused by: android.view.InflateException: Binary XML file line #301: Binary XML file line #301: Error inflating class android.support.wearable.view.drawer.WearableActionDrawer\n Caused by: android.view.InflateException: Binary XML file line #301: Error inflating class android.support.wearable.view.drawer.WearableActionDrawer\n Caused by: java.lang.reflect.InvocationTargetException\n at java.lang.reflect.Constructor.newInstance0(Native Method)\n at java.lang.reflect.Constructor.newInstance(Constructor.java:430)\n at android.view.LayoutInflater.createView(LayoutInflater.java:645)\n at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)\n at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)\n at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)\n at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)\n at android.view.LayoutInflater.inflate(LayoutInflater.java:518)\n at android.view.LayoutInflater.inflate(LayoutInflater.java:426)\n at android.view.LayoutInflater.inflate(LayoutInflater.java:377)\n at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:412)\n at android.app.Activity.setContentView(Activity.java:2414)\n at com.mendonphoto.run2gps.MainActivity.setLayout(MainActivity.java:646)\n at com.mendonphoto.run2gps.MainActivity.onCreate(MainActivity.java:680)\n at android.app.Activity.performCreate(Activity.java:6682)\n at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)\n at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)\n at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)\n at android.app.ActivityThread.-wrap12(ActivityThread.java)\n at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)\n at android.os.Handler.dispatchMessage(Handler.java:102)\n at android.os.Looper.loop(Looper.java:154)\n at android.app.ActivityThread.main(ActivityThread.java:6119)\n at java.lang.reflect.Method.invoke(Native Method)\n at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)\n Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0\n at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:190)\n at android.content.res.Resources.getDrawable(Resources.java:770)\n at android.content.res.Resources.getDrawable(Resources.java:742)\n at android.support.wearable.view.drawer.WearableActionDrawerMenu$WearableActionDrawerMenuItem.setIcon(WearableActionDrawerMenu.java:268)\n at android.view.MenuInflater$MenuState.setItem(MenuInflater.java:441)\n at android.view.MenuInflater$MenuState.addItem(MenuInflater.java:494)\n at android.view.MenuInflater.parseMenu(MenuInflater.java:190)\n at android.view.MenuInflater.inflate(MenuInflater.java:111)\n at android.support.wearable.view.drawer.WearableActionDrawer.(WearableActionDrawer.java:163)\n 08-05 15:57:46.288 3993-3993/com.mendonphoto.abeddes.run2gps E/AndroidRuntime: at android.support.wearable.view.drawer.WearableActionDrawer.(WearableActionDrawer.java:106)\n at android.support.wearable.view.drawer.WearableActionDrawer.(WearableActionDrawer.java:102)\n ... 26 more\n

\n这是我xml文件中的布局:\n


...一堆的东西

\n我的build.gradle文件:\n

apply plugin: 'com.android.application'
android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig {
        applicationId "com.mendonphoto.abeddes.run2gps"
        minSdkVersion 25
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.support:wearable:2.0.3'
    compile 'com.google.android.wearable:wearable:2.0.3'
    compile 'com.google.android.gms:play-services-wearable:11.0.2'
    compile 'com.google.android.gms:play-services-location:11.0.2'
    compile 'com.android.support:support-v13:25.3.1'

0
0 Comments

我之前遇到了同样的问题,现在已经解决了。

我认为你应该使用com.android.support:wear。像这样:

provided 'com.google.android.wearable:wearable:2.0.5'
compile 'com.android.support:wear:26.1.0'

阅读这个文档:https://developer.android.com/training/wearables/ui/wear-ui-library.html

0
0 Comments

问题:android.view.InflateException with android.support.wear.widget.drawer.WearableDrawerLayout

原因:我发现在抽屉菜单的XML文件中缺少了"android:icon"标志。显然,对于一个操作抽屉来说,图标是必需的。

解决方法:在抽屉菜单的XML文件中添加"android:icon"标志。

以下是问题出现的原因和解决方法的整理:

问题出现的原因是因为在抽屉菜单的XML文件中缺少了"android:icon"标志。根据发现,对于一个操作抽屉来说,图标是必需的。

解决这个问题的方法很简单,只需要在抽屉菜单的XML文件中添加"android:icon"标志即可。

示例代码如下:


    
    
    

通过添加"android:icon"标志,并为每个菜单项指定相应的图标资源,可以解决该问题。这样,在抽屉菜单被加载时,不会出现android.view.InflateException with android.support.wear.widget.drawer.WearableDrawerLayout的异常。

0
0 Comments

如果您正在使用AndroidX,导入应该是这样的:androidx.wear:wear:[版本],并且XML应该引用以下完全限定路径:<androidx.wear.widget.drawer.WearableDrawerLayout …,更多信息请参见AndroidX迁移指南

0