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