2012-02-07 23 views
7

Tôi vừa truy cập vào thị trường Android để xuất bản bản cập nhật cho ứng dụng của mình và nhận thấy có một vài lỗi mới được báo cáo từ lượt cài đặt hiện tại. Trong khi tôi có thể hiểu được (và cố gắng làm điều gì đó về) hầu hết trong số họ, điều này khiến tôi khá bối rối:Android StackOverflowError trong 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 ... 

này được tất cả những gì - không có các thông tin khác dưới mọi hình thức.

Tôi hoàn toàn bối rối về nơi bắt đầu điều tra điều này. Bất kỳ ý tưởng được đánh giá rất cao.

Trả lời

1

Tôi đã theo dõi sự cố. Dường như với tôi giống như một lỗi trong Android, được hiển thị khi Chế độ xem visibility của Chế độ xem được đặt rõ ràng thành VISIBLE nhưng chính chế độ xem đó và bố mẹ của chế độ xem không được thêm vào chế độ xem chính.

Cuối cùng tôi đã giải quyết vấn đề bằng cách thêm ListView được đề cập vào XML thay vì tạo nó trong mã và di chuyển mã setVisibility(View.VISIBLE) sau khi toàn bộ khung nhìn được thêm vào chế độ xem chính (con tất cả các cách để bắt đầu).

Ít nhất tôi không gặp phải lỗi này nữa.

10

Điều đó dường như là một phương pháp được thêm vào ICS, vì vậy phiên bản 4.0 trở lên. Nhìn vào the code, có vẻ như bạn có một số loại vòng xem trong hệ thống phân cấp của mình vì đó là rõ ràng là dòng child.resetResolvedTextDirection(); đang thực hiện. Nói cách khác, một trong các lớp học ViewGroup trong bố cục của bạn bằng cách nào đó đã được thêm vào dưới dạng một đứa trẻ ở một nơi nào đó bên dưới dòng.

+0

tôi nhìn thấy. Tôi khá chắc chắn rằng một cái nhìn không thể được thêm vào chính nó (trực tiếp hoặc gián tiếp) như một đứa trẻ - nếu không tất cả các loại vấn đề sẽ xảy ra. Tôi sẽ cố gắng để có được giả lập ics và cố gắng chạy thông qua trình gỡ lỗi có - có thể sẽ có thể tìm thấy vấn đề. –

+0

Yup, có một kiểm tra 'cha mẹ 'mà bạn sẽ _think_ sẽ tránh điều đó. Nhưng tôi không thể giải thích một vòng lặp đệ qui theo bất kỳ cách nào khác. Trừ khi nó không đệ quy và phân cấp khung nhìn của bạn thực sự sâu sắc. –

1

Vấn đề là khi bạn tăng lượt xem sao cho inflater.inflate(R.layout.view_topic, this); và cha mẹ của chế độ xem này vẫn không hiển thị/hiển thị trên màn hình.

Hãy chắc chắn rằng bạn làm cho nó sau khi phụ huynh có thể nhìn thấy hoặc gọi

View child = inflater.inflate(R.layout.view_topic, null); // null will give warning but it wont throw an exception 
     this.addView(child); 
Các vấn đề liên quan