二进制XML文件第20行:在Android 6.0中膨胀类TextView时出错。

问题描述 投票:0回答:1

我为我的应用程序做了一个布局,它在Nougat及以上版本中工作得很完美,但由于某种原因,应用程序在Android 6.0中崩溃,并出现以下错误。

05-01 18:26:02.658   805  1839 I ActivityManager: START u0 {cmp=com.vanced.manager/.ui.MainActivity} from uid 10081 on display 0
05-01 18:26:02.691 13123 13123 I art     : Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>
05-01 18:26:02.692 13123 13123 I art     : Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>
05-01 18:26:02.699   805  1623 D ConnectivityService: notifyType CAP_CHANGED for NetworkAgentInfo [WIFI () - 100]
05-01 18:26:02.825  9919  9987 I FontsContentProvider: Received query name=Exo&weight=600, URI content://com.google.android.gms.fonts
05-01 18:26:02.825  9919  9987 I FontsContentProvider: Query [name=Exo&weight=600] resolved to {Exo, wdth 100.0, wght 600, ital 0.0, bestEffort false}
05-01 18:26:02.829 13123 13123 D AndroidRuntime: Shutting down VM
05-01 18:26:02.833 13123 13123 E AndroidRuntime: FATAL EXCEPTION: main
05-01 18:26:02.833 13123 13123 E AndroidRuntime: Process: com.vanced.manager, PID: 13123
05-01 18:26:02.833 13123 13123 E AndroidRuntime: Theme: themes:{}
05-01 18:26:02.833 13123 13123 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vanced.manager/com.vanced.manager.ui.MainActivity}: android.view.InflateException: Binary XML file line #20: Error inflating class TextView
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.app.ActivityThread.-wrap11(ActivityThread.java)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:102)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:148)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:5461)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
05-01 18:26:02.833 13123 13123 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class TextView
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at com.vanced.manager.ui.fragments.HomeFragment.onCreateView(HomeFragment.kt:32)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1238)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.app.Activity.performStart(Activity.java:6268)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2413)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        ... 9 more
05-01 18:26:02.833 13123 13123 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class TextView
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.parseInclude(LayoutInflater.java:971)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.rInflate(LayoutInflater.java:831)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
05-01 18:26:02.833 13123 13123 E AndroidRuntime:        at android.view.LayoutInflater.rInflate(L
05-01 18:26:02.839   805  2693 W ActivityManager:   Force finishing activity com.vanced.manager/.ui.MainActivity

错误发生在这个布局上。

<com.google.android.material.card.MaterialCardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:cardCornerRadius="@dimen/eightdp"
    app:cardBackgroundColor="?colorSurfaceVariant"
    app:cardElevation="0dp"
    app:cardPreventCornerOverlap="true"
    app:contentPaddingRight="8dp"
    app:contentPaddingLeft="8dp"
    app:contentPaddingTop="5dp"
    app:contentPaddingBottom="5dp">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/vanced_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableStart="@drawable/ic_vanced"
            android:drawablePadding="8dp"
            android:fontFamily="@font/exo_bold"
            android:text="@string/vanced"
            android:textColor="?colorPrimary"
            android:textSize="24sp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

问题出在 <TextView/> 标签。我不知道为什么在Marshmallow上会发生这种情况,而在Nougat+上不会(还没有测试棒棒糖,但我认为那里也会发生问题)。有人能解释一下吗?

更新。 这里是 HomeFragment.kt

package com.vanced.manager.ui.fragments
import android.content.Context
import android.net.ConnectivityManager
import android.net.Networkimport android.net.NetworkCapabilities
import android.net.NetworkRequestimport android.os.Bundle
import android.view.*import android.view.animation.Animation
import android.view.animation.AnimationUtils
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.card.MaterialCardView
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.vanced.manager.R
import com.vanced.manager.adapter.SectionPageAdapter
import com.vanced.manager.core.fragments.Home 

class HomeFragment : Home() { 
    private lateinit var sectionPageAdapter: SectionPageAdapter
    private lateinit var viewPager: ViewPager2

    override fun onCreateView( 
        inflater: LayoutInflater, 
        container: ViewGroup?, 
        savedInstanceState: Bundle? ): 
    View? { 
        activity?.title = getString(R.string.title_home) 
        setHasOptionsMenu(true) return  
        inflater.inflate(R.layout.fragment_home, container, false) }
android android-layout textview
1个回答
1
投票

05-01 18:26:02.833 13123 13123 E AndroidRuntime: 原因是:android.view.InflateException。二进制XML文件第20行:错误地对类TextView进行了充气。

android:textColor="?colorPrimary"<attr format="color" name="colorPrimary"/>. 这将是一个很好的方法,如果你使用

 android:textColor="@color/colorPrimary"  // call hex code from color xml

好像是你的 android:drawableStart="@drawable/ic_vanced" 导致问题。请删除并运行。

移除并运行。Clean-Rebuild-Run.


0
投票

在textview属性中

去掉

 android:textColor="?colorPrimary"

添加

android:textColor="@color/colorPrimary"
© www.soinside.com 2019 - 2024. All rights reserved.