【问题标题】:android baseAdapter weird errorandroid baseAdapter 奇怪的错误
【发布时间】:2012-06-23 21:56:50
【问题描述】:

正如在其他一些线程中提到的,我无法从 BaseAdapter 的 Textview 中设置文本。

每当我尝试在其中设置希伯来语字符串时,都会出现 stackoverflow 错误.. 设置英文字符串时 - 完美运行 我试图找出错误的确切位置,所以我已经分解了我的每一段代码,这就是我发现的: 当我的文本视图嵌套在新视图中时 - 出现 stackoverflow..

在这个 XML 中有 stackoverflow(仅在希伯来语字符串中):

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

    <TableRow>

        <include
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:layout_gravity="center_vertical"
            android:layout_margin="4dp"
            layout="@layout/list_profile_picture_green"
            android:padding="4dp" />

        <TableLayout android:layout_width="match_parent"
            android:layout_height="match_parent">

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        </TableLayout>

    </TableRow>

</TableLayout>

这个 XML 完美地显示了希伯来语:

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

    <TableRow>

        <include
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:layout_gravity="center_vertical"
            android:layout_margin="4dp"
            layout="@layout/list_profile_picture_green"
            android:padding="4dp" />



        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />


    </TableRow>

</TableLayout>

这是我的堆栈跟踪:

06-24 00:48:02.565: E/AndroidRuntime(20483): FATAL EXCEPTION: main
06-24 00:48:02.565: E/AndroidRuntime(20483): java.lang.StackOverflowError
06-24 00:48:02.565: E/AndroidRuntime(20483):    at java.lang.StringBuilder.append(StringBuilder.java:312)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at java.lang.StringBuilder.append(StringBuilder.java:44)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at java.util.Formatter.outputCharSequence(Formatter.java:1114)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at java.util.Formatter.doFormat(Formatter.java:1086)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at java.util.Formatter.format(Formatter.java:1062)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at java.util.Formatter.format(Formatter.java:1031)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at java.lang.String.format(String.java:2183)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at java.lang.String.format(String.java:2157)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.text.Styled.drawDirectionalRun(Styled.java:266)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.text.Styled.drawText(Styled.java:362)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.text.Layout.drawText(Layout.java:1546)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.text.Layout.draw(Layout.java:380)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.widget.TextView.onDraw(TextView.java:4417)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.View.draw(View.java:6933)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.widget.AbsListView.dispatchDraw(AbsListView.java:1648)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.widget.ListView.dispatchDraw(ListView.java:3217)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.View.draw(View.java:6936)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.widget.AbsListView.draw(AbsListView.java:3030)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.View.draw(View.java:6936)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.View.draw(View.java:6936)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.View.draw(View.java:6936)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.View.draw(View.java:6936)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.view.View.draw(View.java:6936)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
06-24 00:48:02.565: E/AndroidRuntime(20483):    at com.android.internal.policy.impl.P

知道为什么吗???

【问题讨论】:

  • 在你的“破碎”XML 中,如果你的textView1 对象在TableRow 中,会发生什么?另外,你用什么代码来设置TextView中的文字?
  • 正如我所说,当它在表格行(或任何其他布局)内时,我会得到一个 stackoverflow... 我只是通过使用 setText("hebrew string")

标签: android android-listview baseadapter


【解决方案1】:

文本本身没有错误。当使用这个确切的代码(没有include)时,我在英语和希伯来语上都没有错误,无论是 XML 布局。

这里的问题是你有太多的嵌套布局。我怀疑这个TableLayout 包含在其他东西中,它来自其他东西,等等......

你必须减少嵌套布局的数量;我怀疑这显示为StackOverflow 错误的原因是因为希伯来语从右到左读取并且还占用更多空间来表示,所以这就是将内存推到极限的原因。

我相信您在herehere 上列出了相同的问题。

减少您拥有的嵌套布局项的数量,这应该会消失。 (例如,作为一般做法,另一个TableLayout 中的TableLayout 是不好的做法。)This 可能会有所帮助。

【讨论】:

  • 我实际上已经改变了这一切,我正在使用相对布局,我很想知道是否有人能够找出问题所在。嵌套表在我的脑海中来自HTML,但我想你是对的.. 太多的嵌套元素对任何人都没有好处... :) 谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-10-29
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多