Ai/Cuộc gọi nào trênFinishInflate()? Không có vấn đề làm thế nào tôi thổi phồng các tập tin bố trí của tôi (trong mã) phương pháp này dường như không bao giờ được kích hoạt. Bất cứ ai có thể cho tôi một ví dụ hoặc cho tôi biết khi onFinishInflate() thực sự được gọi là?onFinishInflate() không bao giờ được gọi là
Trả lời
View.onFinishInflate()
được gọi sau khi xem (và con của nó) được tăng cao từ XML. Cụ thể, trong khi gọi đến LayoutInflater.inflate(...)
, onFinishInflate()
sẽ được gọi. Lạm phát được thực hiện đệ quy, bắt đầu từ gốc. Một cái nhìn có chứa trẻ em có thể cần phải biết khi trẻ em của nó đã hoàn thành được thổi phồng. Một trong những cách sử dụng chính của cuộc gọi lại này là dành cho ViewGroups
để thực hiện các hành động đặc biệt khi con của nó đã sẵn sàng.
Giả sử bạn có một lớp con của View
được gọi là CustomView
và rằng nó không tự động tăng lên bất kỳ bố cục nào. Nếu bạn đã có một nơi CustomView
trong cách bố trí của bạn, ví dụ:
...
<com.company.CustomView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
...
Bạn sẽ thấy một callback để onFinishInflate()
khi nó đã được thổi phồng. Nếu đây là bố cục chính của hoạt động của bạn, thì bạn có thể xem xét việc này sau khi gọi Activity.setContentView(int)
. Nội bộ, điều này sẽ gọi LayoutInflater.inflate(...)
.
Ngoài ra, nếu bạn đã tạo một thể hiện của CustomView
với:
...
new CustomView(context);
...
... bạn sẽ không nhận được một cuộc gọi đến onFinishInflate()
. Việc khởi tạo nó theo cách này sẽ tự nhiên có nghĩa là nó không có con và do đó nó không phải chờ cho chúng được khởi tạo theo kiểu đệ quy, như trong lạm phát XML.
- 1. Destructor không bao giờ được gọi là
- 2. onIabPurchaseFinishedListener không bao giờ được gọi là
- 3. surfaceCreated() Không bao giờ được gọi là
- 4. IMetadataAware.OnMetadataCreated không bao giờ được gọi là
- 5. OnInfoListener không bao giờ được gọi là
- 6. LocationClient requestUpdates onLocationThay đổi không bao giờ được gọi là
- 7. onSaveInstanceState của Fragment() không bao giờ được gọi là
- 8. OnPageScrollStateChanged của Android ViewPager không bao giờ được gọi là
- 9. Android ACTION_UP thậm chí không bao giờ được gọi là
- 10. Android OnInfoWindowClickListener() không bao giờ được gọi là
- 11. TaskScheduler.UnobservedTaskException không bao giờ được gọi
- 12. Hibernate @PostLoad không bao giờ được gọi
- 13. BaseAdapter thông báoDatasetChanged() được gọi nhưng getView() không bao giờ được gọi là
- 14. onCreateDrawableState không bao giờ gọi
- 15. Android: AudioRecord Class Sự cố: Gọi lại không bao giờ được gọi là
- 16. onServiceConnected không bao giờ được gọi sau phương thức bindService
- 17. Tại sao destructor của tôi không bao giờ được gọi?
- 18. Tại sao sơn()/paintComponent() không bao giờ được gọi?
- 19. onBind() không bao giờ được gọi trong dịch vụ
- 20. Phương thức didUpdateLocation Không bao giờ được gọi
- 21. OnUpdate KHÔNG BAO GIỜ gọi - Android Widget
- 22. Tại sao afterRender không bao giờ gọi?
- 23. jQuery ajax callback không bao giờ gọi
- 24. OnTouchListener on Activity không bao giờ gọi
- 25. MKAnnotationXem chế độ xemCho phép không bao giờ được gọi là
- 26. Javascript: Phương thức fbAsyncInit() của tôi không bao giờ được gọi là
- 27. - (void) applicationWillResignActive: (UIApplication *) ứng dụng không bao giờ được gọi là
- 28. QMetaObject :: invokeMethod trả về true, nhưng phương thức không bao giờ được gọi là
- 29. Tùy chỉnh ASP.NET MVC ActionFilterAttribute - móc không bao giờ được gọi là
- 30. Phân lớp UIView. phương pháp init không bao giờ được gọi là
Vì vậy, tài liệu sai. Nếu bạn thổi phồng bố cục theo cách thủ công, gọi lại không được gọi. Nhưng bạn vẫn có thể gọi nó theo cách thủ công để đồng nhất. – Snicolas
Bạn không thể tự gọi phương thức này. Đó là một phương pháp được bảo vệ ... bạn sẽ cần một lớp được bảo vệ. Nhận thấy rằng có nó trong gói 'android.view' không hoạt động. –
Điều đó không đúng, bạn có thể gọi 'super.onFinishInflate' hoặc 'onFinishInflate' bị ghi đè trong hàm tạo. – GLee