Подтвердить что ты не робот

В чем разница между setContentView и LayoutInflater?

Я создаю список вкладок с несколькими фрагментами. Я заметил, что в основном действии я использовал setContentView для получения макета xml и использования findViewById для получения соответствующей конфигурации элемента пользовательского интерфейса.

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

Однако, в другом классе фрагментов я должен использовать вместо этого надуватель.

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

И обе функции используются для получения макета xml для создания объекта, почему существует разница? Используется ли первый во время onCreate, а второй - во время onCreateView? В какой ситуации я должен выбрать любой из них?

4b9b3361

Ответ 1

setContentView - это только метод Activity. Каждому Activity предоставляется FrameLayout с идентификатором "@+id/content" (т.е. Вид содержимого). Какой бы вид, который вы указали в setContentView, не будет отображаться для этого Activity. Обратите внимание, что вы также можете передать экземпляр представления этому методу, например. setContentView(new WebView(this)); Версия метода, который вы используете, будет завышать представление за кулисами.

Фрагменты, с другой стороны, имеют метод жизненного цикла, называемый onCreateView, который возвращает представление (если оно есть). Наиболее распространенный способ сделать это - раздуть представление в XML и вернуть его в этом методе. В этом случае вам нужно раздуть его самостоятельно. Фрагменты не имеют метода setContentView