【问题标题】:How to make FAB work in Fragment from a Activity and not in AppCompatActivity如何使 FAB 在 Activity 的 Fragment 中而不是在 AppCompatActivity 中工作
【发布时间】:2017-10-01 13:16:50
【问题描述】:

我将我的 FAB 放入 Activity 的片段中,但我不断收到此错误:

10-01 21:01:55.238 22031-22031/com.vei.scanandgo E/AndroidRuntime: 
FATAL EXCEPTION: main
 Process: com.vei.scanandgo, PID: 22031
 android.view.InflateException: Binary XML file line #408: Error inflating class android.support.design.widget.FloatingActionButton
     at android.view.LayoutInflater.createView(LayoutInflater.java:620)
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
     at com.vei.scanandgo.BaseFragment.storeView(BaseFragment.java:317)
. . .
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
     at dalvik.system.NativeStart.main(Native Method)
  Caused by: java.lang.reflect.InvocationTargetException
     at java.lang.reflect.Constructor.constructNative(Native Method)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
. . .
. ...
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
     at dalvik.system.NativeStart.main(Native Method) 
  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.FloatingActionButton.<init>(FloatingActionButton.java:159)
     at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:153)
. . 
. ..

Gradle 设置为

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'

充气是由:

View mView = inflater.inflate(getlayoutResId(), container, false);

我唯一没有改变的是 Activity 到 AppCompatActivity,它会影响很多现有的代码。 我们有办法让这个 FAB 与 Activity 一起工作吗?

工厂:

<android.support.design.widget.FloatingActionButton
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="16dp"
    android:src="@drawable/pichere"
    app:backgroundTint="@color/white"
    app:borderWidth="0dp" />

谢谢!

如果我的设计有误,请告知我还能做些什么来使这个片段与 FAB 一起工作。

【问题讨论】:

    标签: android floating-action-button


    【解决方案1】:

    我们有办法让这个 FAB 与 Activity 一起工作吗?

    不直接。 android.support.design.widget.FloatingActionButton 需要 AppCompatActivityTheme.AppCompat

    我在this library 中有一个该小部件的交叉端口,可以与常规Activity(或FragmentActivity)一起使用,但它适用于21 或更高的minSdkVersion,因为它需要Theme.Material .

    还有其他 FAB 实现,例如 this one,不需要 appcompat-v7,也不需要 Theme.Material

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-10
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 2020-11-15
      相关资源
      最近更新 更多