扩展类android.support.design.widget.FloatingActionButton时出错

问题描述 投票:28回答:9

我的应用程序崩溃是因为

扩展类android.support.design.widget.FloatingActionButton时出错

这是我在XML中的代码

<android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_margin="16dp"
        android:src="@drawable/icon_right"
        app:backgroundTint="@color/green"
        android:onClick="previewphoto"
        app:layout_anchorGravity="bottom|right|end" />

这是我的傻瓜

compile 'com.android.support:appcompat-v7:23.4.0' // appcompat library
compile 'com.android.support:design:23.4.0'

我的logcat

致命异常:主要过程:com.cyanlabsid.cetakphoto,PID:15298了java.lang.RuntimeException:无法启动活动ComponentInfo {com.cyanlabsid.cetakphoto / com.cyanlabsid.cetakphoto.PhotoPicker}:android.view.InflateException:二进制XML文件行#76:二进制XML文件行#76:错误充气类android.support.design.widget.FloatingActionButton在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2423)在android.app.ActivityThread.handleLaunchActivity(ActivityThread。 java:2483)在Android.app.Handler.dispatchMessage(Handler.java:)的android.app.ActivityThread.access $ 900(ActivityThread.java:153)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1349) 102)在android.app.Looper.loop(Looper.java:148)的android.app.ActivityThread.main(ActivityThread.java:5441),位于com.android的java.lang.reflect.Method.invoke(Native Method) .internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:738)at com.android.internal.os.ZygoteInit.main(ZygoteInit.ja va:628)由以下原因引起:android.view.InflateException:二进制XML文件行#76:二进制XML文件行#76:在android.view.LayoutInflater.inflate(LayoutInflater)中输出类android.support.design.widget.FloatingActionButton时出错。的java:543)在android.view.LayoutInflater.inflate(LayoutInflater.java:427)在android.view.LayoutInflater.inflate(LayoutInflater.java:374)在android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java :284)在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)在com.cyanlabsid.cetakphoto.PhotoPicker.onCreate(PhotoPicker.java:74)在android.app.Activity.performCreate(活动。的java:6303)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)在android.app.ActivityThread.access $ 900(ActivityThread.java:153)在android.app .ActivityThread $ H.handleMessage(ActivityThread.java:1349)在android.app.Loper.loop(Looper.java:148)的android.app.Handler.dispatchMessage(Handler.java:102)android.app.ActivityThread。主要在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:738)在com.android.internal(ActivityThread.java:5441)在java.lang.reflect.Method.invoke(本机方法)。 os.ZygoteInit.main(ZygoteInit.java:628)

有人能说出我的错吗?

android floating-action-button runtimeexception
9个回答
12
投票

试过你的代码,问题在于23.4.0库。

升级到24. +,该lib没有错误。

例如 :

implementation 'com.android.support:appcompat-v7:24.2.1' // appcompat library
implementation 'com.android.support:design:24.2.1'

您还需要将编译版本更改为24。

compileSdkVersion 24

50
投票

使用

app:backgroundTint

代替

android:backgroundTint

希望它会奏效。


19
投票

因为android:backgroundTint在android API 21下不起作用,所以你需要使用app:backgroundTint代替。


12
投票

以下API级别21应用程序版本不支持

app:backgroundTint="@color/green"

或者您可以使用此库来实现更多材质设计小部件。

https://github.com/navasmdc/MaterialDesignLibrary

快乐的编码......


8
投票

我有同样的问题

我遇到了与Pre-Lollipop版本相同的问题并解决了它,我只是将“android:src”更改为“app:srcCompat”并且它对我有用。

为了与旧版本兼容,如果您使用矢量图形(作为可绘制资源),您应该使用:

app:srcCompat="@drawable/you_graphics"

代替:

android:src="@drawable/your_graphics"

5
投票

你需要添加

机器人:主题= “@风格/ Theme.AppCompat”

在您使用FloatingActionButton的XML_Layout文件中...


2
投票

我在用:

classpath'com.android.tools.build:grad:3.3.2'

distributionUrl = HTTPS://services.gradle.org/distributions/gradle-4.10.1-all.zip

我将XML更改为:

<com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:clickable="true"
        android:focusable="true"
        app:srcCompat="@drawable/mapit"
        app:layout_anchor="@id/foundit_imageView"
        app:layout_anchorGravity="bottom|right|end" />

一切都建立并正确运行。

我希望这有帮助


1
投票

使用此代码,它将更好地工作;

<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_margin="16dp"
        app:backgroundTint="#f9fcfc"

        android:src="@drawable/chat_float"
        tools:targetApi="lollipop" />

1
投票

确保在活动中声明FloatingActionButton的库与用于布局标记的库相同

例如有

import com.google.android.material.floatingactionbutton.FloatingActionButton;在活动中和com.google.android.material.floatingactionbutton.FloatingActionButton作为布局的标记

© www.soinside.com 2019 - 2024. All rights reserved.