vistas studio layoutinflater layout_inflater_service inflar getlayoutinflater example ejemplo como activity android layout xml-parsing android-lifecycle layout-inflater

android - studio - ¿Cuál es la diferencia entre setContentView y LayoutInflater?



layout_inflater_service (1)

Estoy creando una lista de pestañas con varios fragmentos. Me he dado cuenta de que, en la actividad principal, usé setContentView para obtener el xml de diseño y usar findViewById para obtener la configuración del elemento de interfaz de usuario correspondiente.

setContentView(R.layout.fragment_tabs); mTabHost = (TabHost)findViewById(android.R.id.tabhost); mTabHost.setup(); mTabManager = new TabManager(this, mTabHost, android.R.id.tabcontent);

Sin embargo, en la clase de fragmento diferente, tengo que usar el inflador en su lugar.

View v = inflater.inflate(R.layout.webview, container, false); WebView myBrowser=(WebView)v.findViewById(R.id.mybrowser);

Y ambas funciones se utilizan para obtener el diseño xml para crear un objeto, ¿por qué hay una diferencia? ¿El primero se usa durante onCreate y el segundo durante onCreateView ? ¿En qué situación debería elegir alguno de ellos?


setContentView es solo un método de Activity . Cada Activity se proporciona con un FrameLayout con id "@+id/content" (es decir, la vista de contenido). Cualquier vista que especifique en setContentView será la vista para esa Activity . Tenga en cuenta que también puede pasar una instancia de una vista a este método, por ejemplo, setContentView(new WebView(this)); La versión del método que está utilizando inflará la vista detrás de escena.

Los fragmentos, por otro lado, tienen un método de ciclo de vida llamado onCreateView que devuelve una vista (si la tiene). La forma más común de hacer esto es inflar una vista en XML y devolverla en este método. Aunque en este caso necesitas inflarlo tú mismo. Los fragmentos no tienen un método setContentView