Android 应用程序在 Android 13 上崩溃

SHI*_* CS 5 crash android android-layout layout-inflater inflate-exception

在三星 Android 13 设备中出现奇怪的崩溃,但这在其他设备上运行良好。最近,我们在 Firebase 崩溃分析中遇到了一起崩溃,下面是崩溃报告。应用程序的目标 API 级别为 33,到目前为止仅在三星 Android 13 设备中报告崩溃。

编辑文本.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

   <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/login_input1_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColorHint="@color/input_field_text_color"
        android:theme="@style/login_floating_text_style">


        <com.mobileaware.unified.ui.controls.common.MaEditText
            android:id="@+id/login_input1"
            style="@style/input_field_validation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:visibility="gone" />

    </com.google.android.material.textfield.TextInputLayout>

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/login_input2_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColorHint="@color/input_field_text_color"
        android:theme="@style/login_floating_text_style">

    <com.mobileaware.unified.ui.controls.common.MaEditText
            android:id="@+id/login_input2"
            style="@style/input_field_validation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:visibility="gone" />

    </com.google.android.material.textfield.TextInputLayout>

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/login_input3_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColorHint="@color/input_field_text_color"
        android:theme="@style/login_floating_text_style">

    <com.mobileaware.unified.ui.controls.common.MaEditText
            android:id="@+id/login_input3"
            style="@style/input_field_validation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:visibility="gone" />

    </com.google.android.material.textfield.TextInputLayout>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪 :

Fatal Exception: android.view.InflateException
Binary XML file line #21 `com.xyz.abc:layout/edit_texts: Attempt to invoke virtual method 'int android.graphics.Typeface.getWeight()' on a null object reference

Caused by java.lang.NullPointerException
Attempt to invoke virtual method 'int android.graphics.Typeface.getWeight()' on a null object reference

keyboard_arrow_up
com.google.android.material.resources.TypefaceUtils.maybeCopyWithFontWeightAdjustment (TypefaceUtils.java:57)
com.google.android.material.internal.CollapsingTextHelper.setCollapsedTypefaceInternal (CollapsingTextHelper.java:480)
com.google.android.material.internal.CollapsingTextHelper.setTypefaces (CollapsingTextHelper.java:463)
com.google.android.material.textfield.TextInputLayout.setEditText (TextInputLayout.java:1426)
com.google.android.material.textfield.TextInputLayout.addView (TextInputLayout.java:836)
android.view.ViewGroup.addView (ViewGroup.java:5268)
android.view.LayoutInflater.rInflate (LayoutInflater.java:1149)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:1106)
android.view.LayoutInflater.rInflate (LayoutInflater.java:1148)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:1106)
android.view.LayoutInflater.inflate (LayoutInflater.java:692)
android.view.LayoutInflater.inflate (LayoutInflater.java:544)
arrow_right
Run Code Online (Sandbox Code Playgroud)

com.mobileaware.unified.ui.fragments.NativeLoginFragment.showTabs (NativeLoginFragment.java:364) com.mobileaware.unified.ui.presenters.NativeLoginFragmentPresenter.bind (NativeLoginFragmentPresenter.java:92) com.mobileaware.unified.ui.presenters。 NativeLoginFragmentPresenter.loadData (NativeLoginFragmentPresenter.java:114) com.mobileaware.unified.ui.presenters.BasePresenter.loadData (BasePresenter.java:484) com.mobileaware.unified.ui.fragments.NativeLoginFragment.injectPresenter (NativeLoginFragment.java:673) com.mobileaware.unified.ui.fragments.BaseFragment.onResume (BaseFragment.java:214) com.mobileaware.unified.ui.fragments.NativeLoginFragment.onResume (NativeLoginFragment.java:1244) androidx.fragment.app.Fragment.performResume ( Fragment.java:3071) androidx.fragment.app.FragmentStateManager.resume (FragmentStateManager.java:605) androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:285) androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete ( SpecialEffectsController.java:771)

Mir*_*cXP 1

TextInputLayout 的实现可能存在问题,因为它可以调用:(TextInputLayout.java:1426)

 collapsingTextHelper.setTypefaces(this.editText.getTypeface());
Run Code Online (Sandbox Code Playgroud)

使用空字体。

在 Android 13 中打开粗体文本时会发生这种情况:设置 -> 显示大小和文本 -> 粗体文本

就我而言,问题是 com.google.android.material.textfield.TextInputEditText 的样式。

因此,请尝试删除并修复您的情况下 MaEditText 的样式。