誰がonFinishInflate()を呼び出しますか?どんなに私のレイアウトファイル(コード内)を膨らませても、このメソッドは決してトリガされないようです。 onFinishInflate()が実際に呼び出されたときに、誰かに私に例を与えたり教えてもらえますか?onFinishInflate()は呼び出されません
17
A
答えて
30
View.onFinishInflate()
ビュー(およびその子)がXMLから拡張された後に呼び出されます。具体的には、LayoutInflater.inflate(...)
へのコール中にonFinishInflate()
が呼び出されます。インフレは、ルートから始まり、再帰的に実行されます。子供を含むビューは、その子供がいつ膨張したかを知る必要があるかもしれない。このコールバックの主な用途の1つは、ViewGroups
がその子が準備ができたら特別なアクションを実行することです。
というサブクラスがあり、CustomView
と呼ばれ、レイアウト自体が内部的に膨らんでいないとします。あなたのレイアウトでCustomView
どこか、すなわちを持っていた場合:それが膨張された後
...
<com.company.CustomView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
...
あなたはonFinishInflate()
にコールバックが表示されます。これがあなたの活動のメインレイアウトにある場合は、Activity.setContentView(int)
が呼び出された後であるとみなすことができます。内部的にはLayoutInflater.inflate(...)
となります。あなたがCustomView
のインスタンスを作成した場合
また、:
...
new CustomView(context);
...
...あなたはonFinishInflate()
への呼び出しを取得することはできません。このようにインスタンシエートすると、自然にそれが子を持たないため、XMLインフレーションのように再帰的にインスタンス化されるのを待つ必要はありません。
関連する問題
- 1. chartValueSelectedは呼び出されません
- 2. AsyncTask:onPostExecute()は呼び出されません
- 3. onPostExecuteは呼び出されません
- 4. WakefulBroadcastReceiverは呼び出されません
- 5. OnServiceConnectedは呼び出されません
- 6. OnMenuItemSelectedは呼び出されません
- 7. コンストラクタもonFinishInflateもカスタムビューを呼び出さない
- 8. UIViewController:viewWillAppearが呼び出され、viewDidAppearは呼び出されません。
- 9. OnVideoSizeChangedが呼び出されません
- 10. accessoryButtonTappedForRowWithIndexPath:呼び出されません。
- 11. ヒストリックフォールバックメソッドが呼び出されません
- 12. ajax呼び出し成功関数は呼び出されません
- 13. カスタマイズされたArrayAdapterのgetViewは呼び出されません
- 14. didReadRSSIはiOSでは呼び出されましたが、OS Xでは呼び出されません
- 15. AVAudioSessionDelegateはendInterruptionで呼び出されましたが、beginInterruptionは呼び出されません
- 16. セレクタはnumberOfRowsInSectionで呼び出されますが、cellForRowAtIndexPathでは呼び出されません
- 17. なぜshouldHideViewControllerは呼び出されますが、willHideViewControllerは呼び出されませんか?
- 18. 謎:Qtでは、なぜeditorEventが呼び出されますが、createEditorは呼び出されませんか?
- 19. レンダリングされた部分はJavaScriptを呼び出せません
- 20. 呼び出し元アクティビティでonActivityResultが呼び出されていません
- 21. initとinitWithNibNameは呼び出されませんが、viewDidLoadが呼び出されます
- 22. BaseAdapterのAndroid getView()は呼び出されませんが、getCount()が呼び出されます。
- 23. C++ Qt:QStyledItemDelegateのcreateEditorは呼び出されませんが、paint()が呼び出されます。
- 24. Android onRequestPermissionsResultがアクティビティでのみ呼び出されましたが、フラグメントでは呼び出されません
- 25. creatorで呼び出されたメソッドは、基底クラスから呼び出されますが、派生クラスからは呼び出されません
- 26. onMetadataChanged MediaControllerCompat.Callbackはまだ呼び出されていません
- 27. android onLocationChangedはまだ呼び出されていません
- 28. CollectionView sizeForItemAtIndexPathはまだ呼び出されていません
- 29. エラー:plot.newはまだ呼び出されていません
- 30. taskWillPerformHTTPRedirectionはまだ呼び出されていません
したがって、ドキュメントは間違っています。手動でレイアウトを膨張させると、コールバックは呼び出されません。しかし、あなたはそれを手動で呼んで均質にすることができます。 – Snicolas
メソッドを自分で呼び出すことはできません。これは保護されたメソッドです...保護されたクラスが必要です。これはパッケージ 'android.view'で動作しないことに気付きました。 –
これは当てはまりません。コンストラクタで 'super.onFinishInflate'かオーバーライドした' onFinishInflate'を呼び出すことができます。 – GLee