Fur*_*kul 6 android android-jetpack
我们已经收到一些有关此情况的崩溃信息:当我们android:textStyle在AppCompatTextView中使用具有任何值(粗体,斜体或两者兼有)的属性,或者android:fontFamily在Android 4.2.2版本上为其设置值时,其自身就会循环并最终导致StackOverFlowError。
这是我们如何使用视图的示例。
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/welcome_app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="3"
android:gravity="center"
android:text="@string/app_name"
android:textColor="#fff"
android:textSize="26sp"
android:textStyle="bold" />
Run Code Online (Sandbox Code Playgroud)
这是例外之一:
Caused by java.lang.StackOverflowError
at java.lang.Class.getDeclaredField(Class.java)
at java.lang.Class.getDeclaredField(Class.java:629)
at androidx.core.graphics.TypefaceCompatBaseImpl.getUniqueKey(TypefaceCompatBaseImpl.java:85)
at androidx.core.graphics.TypefaceCompatBaseImpl.getFontFamily(TypefaceCompatBaseImpl.java:210)
at androidx.core.graphics.TypefaceCompat.getBestFontFromFamily(TypefaceCompat.java:169)
at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:196)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:702)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:705)
at android.widget.TextView.setTypeface(TextView.java:1581)
// it goes on like this forever until it reaches to Activity.setContentView()
Run Code Online (Sandbox Code Playgroud)
甚至可能在某些特定设备上,因为我们无法在本地重现此问题。除了删除文本样式外,还可以解决该问题?任何帮助表示赞赏,谢谢。