Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EditText在旧设备上导致StackOverflower错误_Java_Android_Android Layout_Stack Overflow - Fatal编程技术网

Java EditText在旧设备上导致StackOverflower错误

Java EditText在旧设备上导致StackOverflower错误,java,android,android-layout,stack-overflow,Java,Android,Android Layout,Stack Overflow,我正在使用第三方工具创建类似于iPhone的TableView 我已经对这个包做了一些很好的编辑,并且添加了一个行具有EditText的功能。我在不同的设备上进行了测试,效果非常好。现在我遇到的问题是,如果我在嵌套布局中有这个UITableView,并且给一行一个编辑文本,当用户在一些旧设备上单击编辑文本时,它会导致堆栈溢出 这是一个片段。结构看起来像这样 (1) (2)(3)(4) RelativeLayout->RelativeLayout->RelativeLayout->ScrollLa

我正在使用第三方工具创建类似于iPhone的
TableView

我已经对这个包做了一些很好的编辑,并且添加了一个行具有EditText的功能。我在不同的设备上进行了测试,效果非常好。现在我遇到的问题是,如果我在嵌套布局中有这个UITableView,并且给一行一个编辑文本,当用户在一些旧设备上单击编辑文本时,它会导致堆栈溢出

这是一个片段。结构看起来像这样

(1) (2)(3)(4) RelativeLayout->RelativeLayout->RelativeLayout->ScrollLayout->UITableView

这背后有一点背景,但长话短说,我需要所有这些布局,所以删除其中一个不是一个选项。这是令人沮丧的,如果我删除了一个RelativeLayouts,应用程序不会崩溃

android UITableView也使用多个线性布局进行设置。理想情况下,如果我能将LinearLayout设置为能够滚动,那就太好了,这样我就可以删除ScrollLayout,问题就消失了,但遗憾的是,我认为这是不可能的

我得到的错误是

06-13 07:42:23.399: E/AndroidRuntime(1429): FATAL EXCEPTION: main
06-13 07:42:23.399: E/AndroidRuntime(1429): java.lang.StackOverflowError
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2758)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.getChildVisibleRect(ViewGroup.java:2759)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.widget.TextView$HandleView.isPositionVisible(TextView.java:8228)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.widget.TextView$HandleView.moveTo(TextView.java:8245)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.widget.TextView$HandleView.positionAtCursor(TextView.java:8340)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.widget.TextView$InsertionPointCursorController.updatePosition(TextView.java:8401)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.widget.TextView.updateCursorControllerPositions(TextView.java:4292)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.widget.TextView.onDraw(TextView.java:4281)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.View.draw(View.java:6986)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1739)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1737)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.View.draw(View.java:6989)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1739)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.View.draw(View.java:6989)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1739)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1737)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1737)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1737)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.View.draw(View.java:7093)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.widget.FrameLayout.draw(FrameLayout.java:361)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.widget.ScrollView.draw(ScrollView.java:1421)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1739)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.View.draw(View.java:6989)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1739)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1737)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1737)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1737)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1737)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.View.draw(View.java:6989)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1739)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.View.draw(View.java:6989)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.widget.FrameLayout.draw(FrameLayout.java:361)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1739)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.ViewGroup.drawChild(ViewGroup.java:1737)
06-13 07:42:23.399: E/AndroidRuntime(1429):     at android.view.Vi
我已经在许多较新的设备、Nexus、HTC等上进行了测试,没有问题。然而,当我在旧设备上测试时,索尼爱立信Mini Pro 2出现了这个错误。我想确保此应用程序不会在旧设备上崩溃,目前该应用程序支持2.3.3+

有人知道这个递归调用是什么导致旧设备崩溃的吗?无论如何都有办法防止这种情况发生


如有任何建议,将不胜感激

您的布局太深,一些设备无法处理。您发布的内容中有4个版面(仅来自片段?如果是,那么您也有来自活动的版面)+
UITableView
。现在我不知道您做了哪些更改,但是快速查看
UITableView
的代码并不是很有效
UITableView
扩展
LinearLayout
仅将另一个版面作为其内容进行充气,该版面由一个
LinearLayout
包装另一个
LinearLayout
组成。因此,
UITableView
又添加了三个额外的布局,没有提及其内容


要么删除
UITableView
(您确定不能使用
ListView
(这可能会消除所有性能问题/异常)),要么修改并改进它,这样它就不会在布局中添加太多级别,要么保留它并修改布局的其余部分以提高效率。

我觉得这就是答案。我使用这个工具的原因是它为我做了取整,并且给了我在需要时向一行添加EditText的选项。我想我将不得不改用GridView或ListView,我只需要一两周的时间就可以把它做好。谢谢你的意见@AdamM我再次快速查看了库的代码。但是,如果使用
list\u container.xml
文件中的
merge
标记而不是viewsContainer
LinearLayout
并将其所有属性直接移动到扩展
LinearLayout
UITableView
中,则可能会使
UITableView
失去一个布局级别。不过,我不知道这是否适用于库的其他部分,但可能值得一试。我会看看这一点,但是,正如您所提到的,库的另一个问题是性能,几行数据并不太差,但是如果您收回大量数据(比如30多行),即使在较新的设备上,速度也可能相当慢。我将尝试使用merge标记来查看这是否有帮助,但我感觉即使这确实解决了stackoverflow错误,也不会对性能问题产生太多影响。谢谢你的时间和努力!!很appreciated@AdamM如果你收回大量数据,比如说30多行-当你有这种疑问时,你会使用
ListView
:)是的,它只会使我需要的应用程序中的其他功能在ListView中更加困难,但遗憾的是,我没有太多选择,啊,好吧,我想这就是编程的乐趣