ViewGroup.resetResolvedTextDirection中的Android StackOverflowError

我刚去Android市场发布更新到我的应用程序,并注意到从现有的安装报告了一些新的错误。 虽然我可以理解(并试图做些什么)大部分,但这个让我感到困惑:

java.lang.StackOverflowError at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) ... this line repeats about 200 times or so ... 

这是所有的 – 没有任何其他的信息。

我完全不知道从哪里开始调查。 任何想法,不胜感激。

  • Android:从视图中获取Viewgroup?
  • 固定宽高比视图
  • 自定义ViewGroup焦点处理
  • addView不起作用
  • Android视图和ViewGroup
  • 为什么selectConstraints布局,因为我们已经有了相对布局?
  • 揭秘Android构build过程
  • 将GestureDetector设置为所有子视图
  • 这似乎是在ICS中添加的方法,所以它是4.0以上。 看看代码 ,好像你在你的层次结构中有某种视图循环,因为它显然child.resetResolvedTextDirection(); 行这样做。 换句话说,你的布局中的一个ViewGroup类已经不知何故被添加为自己的孩子。

    我追查了这个问题。 在我看来,就像Android中的一个bug,当一个View的visibility被明确地设置为VISIBLE但是该视图本身和该视图的父级没有被添加到主视图中时,会出现这个bug。

    我终于解决了这个问题,将有问题的ListView添加到XML中,而不是在代码中创build它,并将代码setVisibility(View.VISIBLE)移动到整个视图添加到主视图之后(即父层次结构可以从每个孩子一直到开始)。

    至less我没有得到这个错误了。

    问题是当你膨胀视图,使inflater.inflate(R.layout.view_topic, this); 而这个观点的父母仍然不可见/呈现在舞台上。

    确保在父视图可见或调用之后进行渲染

     View child = inflater.inflate(R.layout.view_topic, null); // null will give warning but it wont throw an exception this.addView(child);