简体   繁体   English

使用注解使FloatingActionButton膨胀时出错

[英]Error inflating FloatingActionButton with annotation

I am trying to create a Activity with FloatingActionButton button using the android annotations and I get an error inflating it. 我正在尝试使用android批注创建带有FloatingActionButton按钮的Activity,但出现膨胀错误。

activity_video_player.xml activity_video_player.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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"
    tools:context="com.forkandjoin.jointv.activities.VideoPlayerActivity_">

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:src="@drawable/lb_ic_hq"
        android:backgroundTint="@color/img_soft_opaque"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"/>

    <VideoView
        android:id="@+id/videoView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true" />

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

VideoPlayerActivity VideoPlayerActivity

@EActivity(R.layout.activity_video_player)
public class VideoPlayerActivity extends AppCompatActivity {

@ViewById VideoView videoView;

@ViewById FloatingActionButton fab;

@AfterViews
void afterViewInjected(){
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}
}

Error 错误

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.myproject.jointv, PID: 11770

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myproject.jointv/com.myproject.jointv.activities.VideoPlayerActivity_}: android.view.InflateException: Binary XML file line #8: Error inflating class android.support.design.widget.FloatingActionButton at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3119)
    ....
    .... more description....

I am really lost I cannot see where is the error ?? 我真的迷路了,我看不出错误在哪里?

Complete error trace 完整的错误跟踪

03-16 12:33:25.101 16095-16095/com.myproject.jointv E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: com.myproject.jointv, PID: 16095
                                                                        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myproject.jointv/com.myproject.jointv.activities.VideoPlayerActivity_}: android.view.InflateException: Binary XML file line #9: Error inflating class android.support.design.widget.FloatingActionButton
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3119)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218)
                                                                            at android.app.ActivityThread.access$1000(ActivityThread.java:198)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:145)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:6837)
                                                                            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:1404)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
                                                                         Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class android.support.design.widget.FloatingActionButton
                                                                            at android.view.LayoutInflater.createView(LayoutInflater.java:640)
                                                                            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
                                                                            at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
                                                                            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
                                                                            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
                                                                            at com.myproject.jointv.activities.VideoPlayerActivity_.setContentView(VideoPlayerActivity_.java:48)
                                                                            at com.myproject.jointv.activities.VideoPlayerActivity_.onCreate(VideoPlayerActivity_.java:39)
                                                                            at android.app.Activity.performCreate(Activity.java:6500)
                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218) 
                                                                            at android.app.ActivityThread.access$1000(ActivityThread.java:198) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:145) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:6837) 
                                                                            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:1404) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
                                                                         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:614)
                                                                            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) 
                                                                            at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:511) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
                                                                            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267) 
                                                                            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129) 
                                                                            at com.myproject.jointv.activities.VideoPlayerActivity_.setContentView(VideoPlayerActivity_.java:48) 
                                                                            at com.myproject.jointv.activities.VideoPlayerActivity_.onCreate(VideoPlayerActivity_.java:39) 
                                                                            at android.app.Activity.performCreate(Activity.java:6500) 
                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) 
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072) 
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218) 
                                                                            at android.app.ActivityThread.access$1000(ActivityThread.java:198) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:145) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:6837) 
                                                                            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:1404) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
                                                                         Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()' on a null object reference
                                                                            at android.graphics.drawable.LayerDrawable$ChildDrawable.<init>(LayerDrawable.java:961)
                                                                            at android.graphics.drawable.LayerDrawable$LayerState.<init>(LayerDrawable.java:1007)
                                                                            at android.graphics.drawable.RippleDrawable$RippleState.<init>(RippleDrawable.java:932)
                                                                            at android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:923)
                                                                            at android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:94)
                                                                            at android.graphics.drawable.LayerDrawable.mutate(LayerDrawable.java:912)
                                                                            at android.graphics.drawable.RippleDrawable.mutate(RippleDrawable.java:909)
                                                                            at android.view.View.applyBackgroundTint(View.java:17686)
                                                                            at android.view.View.setBackgroundDrawable(View.java:17555)
                                                                            at android.support.v7.widget.AppCompatImageButton.setBackgroundDrawable(AppCompatImageButton.java:84)
                                                                            at android.support.design.widget.FloatingActionButton.access$501(FloatingActionButton.java:58)
                                                                            at android.support.design.widget.FloatingActionButton$ShadowDelegateImpl.setBackgroundDrawable(FloatingActionButton.java:671)
                                                                            at android.support.design.widget.FloatingActionButtonLollipop.setBackgroundDrawable(FloatingActionButtonLollipop.java:75)
                                                                            at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:131)
                                                                            at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:105)
                                                                            at java.lang.reflect.Constructor.newInstance(Native Method) 
                                                                            at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                                                                            at android.view.LayoutInflater.createView(LayoutInflater.java:614) 
                                                                            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) 
                                                                            at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:511) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
                                                                            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267) 
                                                                            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129) 
                                                                            at com.myproject.jointv.activities.VideoPlayerActivity_.setContentView(VideoPlayerActivity_.java:48) 
                                                                            at com.myproject.jointv.activities.VideoPlayerActivity_.onCreate(VideoPlayerActivity_.java:39) 
                                                                            at android.app.Activity.performCreate(Activity.java:6500) 
                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) 
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072) 
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218) 
                                                                            at android.app.ActivityThread.access$1000(ActivityThread.java:198) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:145) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:6837) 
                                                                            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:1404) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 

You are setting a color to backgroundTint while it seems to work only with drawable. 您正在为backgroundTint设置颜色,而它似乎只适用于drawable。 At least I had this problem when I used itemIconTint for my navigation menu. 至少我在使用itemIconTint导航菜单时遇到了这个问题。

Try creating a drawable resource instead: 尝试创建可绘制资源:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="@color/img_soft_opaque" />
</selector>

And then: 接着:

android:backgroundTint="@drawable/your_selector"

Another option to try, using a color resource instead (create a color folder in resources). 尝试使用颜色资源的另一种选择(在资源中创建color文件夹)。 In this case you will reference the file like this: 在这种情况下,您将像这样引用文件:

android:backgroundTint="@color/your_selector"

Sorry for my answer which might be confusing, I'm really not sure what's wrong with just using color :) I just remember I had this issue. 对不起,我的答案可能会令人困惑,我真的不确定使用颜色有什么问题:)我只记得我有这个问题。

EDIT 编辑

Solution with color resource is verified. 验证了具有颜色资源的解决方案。 Ignore my proposal about using a drawable resource. 忽略我有关使用可绘制资源的建议。 Thanks. 谢谢。

EDIT 2 编辑2

From documentation: 来自文档:

android:backgroundTint  setBackgroundTintList(ColorStateList)   Tint to apply to the background. 

Try setting a color state list like this: 尝试设置这样的颜色状态列表:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:color="@color/img_soft_opaque" />
</selector>

You just have to use it with a custom app namespace. 您只需将其与自定义应用程序命名空间一起使用即可。 It works perfectly with color codes as well as ColorStateLists 它与颜色代码以及ColorStateLists完美配合

xmlns:app="http://schemas.android.com/apk/res-auto"

app:backgroundTint="@color/img_soft_opaque"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误膨胀类FloatingActionButton - Error inflating class FloatingActionButton 在膨胀FloatingActionButton的布局时出错:NoSuchMethodException - Error inflating layout of FloatingActionButton : NoSuchMethodException 错误膨胀类 android.support.design.widget.FloatingActionButton - Error inflating class android.support.design.widget.FloatingActionButton 充气错误 class com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton - Error inflating class com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton 在Android中输入类android.support.design.widget.FloatingActionButton时出错 - Error inflating class android.support.design.widget.FloatingActionButton in Android 错误膨胀类android.support.design.widget.FloatingActionButton - android - Error inflating class android.support.design.widget.FloatingActionButton - android 充气错误 class com.google.android.material.floatingactionbutton.FloatingActionButton 仪器测试 - Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton Instrumentation Test 在 Androidx 库上膨胀类 android.support.design.widget.FloatingActionButton 时出错 - Error inflating class android.support.design.widget.FloatingActionButton on Androidx library Android Studio:错误膨胀类 android.support.design.widget.FloatingActionButton - Android Studio: Error inflating class android.support.design.widget.FloatingActionButton 错误FloatingActionButton - Error FloatingActionButton
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM