当前位置: 首页 > 知识库问答 >
问题:

将背景可绘制设置为TextView casues java.lang.StackOverflowError

咸浩初
2023-03-14
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="?attr/selectableItemBackgroundBorderless" android:state_pressed="true" /> <!-- pressed -->
    <item android:drawable="@drawable/drawer" /> <!-- default -->
</selector>
<TextView android:id="@+id/action_drawer"
    android:layout_marginLeft="20dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/action_drawer"/>
java.lang.StackOverflowError: stack size 8MB
          at android.content.res.ColorStateList.valueOf(ColorStateList.java:102)
          at android.graphics.drawable.RippleDrawable$RippleState.<init>(RippleDrawable.java:919)
          at android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:914)
          at android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:94)
          at android.graphics.drawable.LayerDrawable.<init>(LayerDrawable.java:126)
          at android.graphics.drawable.LayerDrawable.<init>(LayerDrawable.java:122)
          at android.graphics.drawable.RippleDrawable.<init>(RippleDrawable.java:979)
          at android.graphics.drawable.RippleDrawable.<init>(RippleDrawable.java:94)
          at android.graphics.drawable.RippleDrawable$RippleState.newDrawable(RippleDrawable.java:945)
          at android.content.res.Resources.getCachedDrawableLocked(Resources.java:2777)
          at android.content.res.Resources.getCachedDrawable(Resources.java:2745)
          at android.content.res.Resources.loadDrawable(Resources.java:2586)
          at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
          at android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:182)
          at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:127)
          at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1133)
          at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1037)
          at android.content.res.Resources.loadDrawableForCookie(Resources.java:2718)
          at android.content.res.Resources.loadDrawable(Resources.java:2614)
          at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
          at android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:182)
          at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:127)
          at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1133)
          at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1037)
          at android.content.res.Resources.loadDrawableForCookie(Resources.java:2718)
          at android.content.res.Resources.loadDrawable(Resources.java:2614)
          at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
          at android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:182)
          at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:127)
          at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1133)
          at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1037)
          at android.content.res.Resources.loadDrawableForCookie(Resources.java:2718)
          at android.content.res.Resources.loadDrawable(Resources.java:2614)
          at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
          at android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:182)
          at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:127)
          at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1133)
          at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1037)
          at android.content.res.Resources.loadDrawableForCookie(Resources.java:2718)
          at android.content.res.Resources.loadDrawable(Resources.java:2614)
          at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
          at android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:182)
          at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:127)
          at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1133)
          at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1037)
          at android.content.res.Resources.loadDrawableForCookie(Resources.java:2718)
          at android.content.res.Resources.loadDrawable(Resources.java:2614)
          at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
          at android.graphics.drawable.StateListDrawable.inflateChildElements(StateListDrawable.java:182)
          at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:127)
        at android.graphi
02-16 13:12:53.567 22641-22641/org.team.asl.carticon E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!
02-16 13:12:53.568 22641-22641/org.team.asl.carticon E/AndroidRuntime: Error reporting crash
      android.os.TransactionTooLargeException
          at android.os.BinderProxy.transactNative(Native Method)
          at android.os.BinderProxy.transact(Binder.java:504)
          at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:4294)
          at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:89)
          at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
          at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)

如何解决这个问题?任何建议都将不胜感激。谢谢你。

共有1个答案

麻宾白
2023-03-14

发生StackOverflowError是因为应用程序递归得太深。

首先修改后台

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true"
      android:drawable="@drawable/pressed/>  // Press State
<item android:state_focused="true"
      android:drawable="@drawable/focused"/> // Focused
<item android:drawable="@drawable/drawer"/>  // Default State

</selector>

要了解更多细节,请查看如何在使用时修改波纹颜色?

 类似资料:
  • 我有一个列表视图。我想为listView项设置边框,所以我使用“Shape”XML。 shape_panel_drawable.xml文件 谢谢!

  • 我的文件夹中有这个xml。 我基本上是用它来为任何视图设置圆角,我将其设置为背景。但我想知道的是,如何保持该视图的颜色/背景色调动态。因为假设我有三个视图,它们都需要圆角,但都需要不同的颜色,所以在这一刻我必须创建三个不同的可绘制文件并分别为每个文件设置颜色。正如我在上面的文件中所做的那样。我尝试过在原始视图上使用,但它不起作用。

  • 问题内容: 我如何告诉paint方法仅在JPanel上而不是在整个JFrame上绘制背景。我的JFrame大小大于JPanel。当我尝试为JPanel绘制网格背景时,网格似乎遍及整个JFrame,而不仅仅是JPanel。 以下是部分代码: 问题答案: camickr是正确的。所以: 您需要严格将工程图与不同组件分开。Swing已经在管理子组件,因此绝对不需要在Panel的Frame中实现图形(调用

  • 问题内容: 设置背景: 是最好的方法吗? 问题答案: ;是正确的。 实现它的另一种方法是使用以下方法: 但我认为出现此问题是因为你尝试加载大图像。 这是一个很好的教程,介绍如何加载大位图。 更新: API级别22中不推荐使用getDrawable(int) 现在API级别22中不推荐使用。你应该改用支持库中的以下代码: 如果你引用的源代码,它将为你提供以下信息: 有关ContextCompat的更

  • 问题内容: 我制作了一个JS动画,希望作为主页的背景。但是我对Web开发还是很陌生,还不清​​楚如何阻止canvas元素成为页面上的“内联”对象,并将其设置在其他HTML元素之后。非常感谢您的指教。HTML是: 问题答案: canvas { position:absolute; top:0; left:0; width:100%; height:100%; z-index:-1; }

  • 所以在我的项目中,我只是想让背景文件有一个gif播放,让它看起来更好,但是我找到的每个解决方案都不起作用。我在JLabel上制作gif,然后将所有内容都添加到JLabel上的解决方案不起作用,项目运行了,但是屏幕上没有显示任何内容。我把gif叫做 我的主长这样 我在乞讨中扩展了JPanel。我添加了一堆盒子,这些盒子有一堆JButton 这有可能吗?