2012-02-07 4 views
7

Я просто пошел на рынок Android, чтобы опубликовать обновление для своего приложения и заметил там несколько новых ошибок, о которых сообщалось из существующих установок. В то время как я могу понять (и пытаться что-то сделать), большинство из них, это один не оставляет меня довольно озадачен:Android StackOverflowError в ViewGroup.resetResolvedTextDirection

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 ... 

Это все есть - никакой другой информации любого рода.

Я полностью в тупике относительно того, где начать расследование этого. Любые идеи приветствуются.

ответ

1

Я отследил проблему. Мне кажется, как ошибка в Android, которая отображается, когда в представлении visibility View явно установлено значение VISIBLE, но сам вид и родительский вид представления не добавляются в основной вид.

Я, наконец, столкнулся с проблемой, добавив рассматриваемый ListView в XML вместо того, чтобы создавать его в коде и перемещать код setVisibility(View.VISIBLE) после того, как весь вид добавлен в основной вид (т.е. родительская иерархия может быть прослежена от каждого ребенок до самого начала).

По крайней мере, я больше не получаю эту ошибку.

10

Это похоже на метод, добавленный в ICS, поэтому он равен 4.0 и более. Глядя на the code, похоже, что у вас есть какая-то петля зрения в вашей иерархии, так как это , видимо, линия child.resetResolvedTextDirection(); делает это. Другими словами, один из ваших классов ViewGroup в вашем макете каким-то образом был добавлен как ребенок к себе где-то по линии.

+0

я вижу. Я совершенно уверен, что представление не может быть добавлено к себе (прямо или косвенно) как к ребенку - иначе возникнут всевозможные проблемы. Я попытаюсь получить симулятор ics и попробую запустить через отладчик там, возможно, сможет найти проблему. –

+0

Да, есть «родительский» чек, который вы бы избегали. Но я не могу объяснить рекурсивный цикл любым другим способом. Если это не является рекурсивным, и ваша иерархия взглядов действительно настолько глубока. –

1

Проблема заключается в том, что вы надуваете вид таким образом, чтобы 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); 
Смежные вопросы