我正在创建一个包含多个片段的标签列表。
我注意到,在主要活动中,我使用setContentView
来获取布局xml并使用findViewById
来获取相应的UI元素配置。
setContentView(R.layout.fragment_tabs);
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
mTabHost.setup();
mTabManager = new TabManager(this, mTabHost, android.R.id.tabcontent);
但是,在不同的片段类中,我必须使用inflater。
View v = inflater.inflate(R.layout.webview, container, false);
WebView myBrowser=(WebView)v.findViewById(R.id.mybrowser);
这两个函数都用于获取布局xml来创建一个对象,为什么会有区别?第一个是在onCreate
期间使用,第二个是在onCreateView
期间使用吗?在什么情况下我应该选择其中任何一个?
答案 0 :(得分:27)
setContentView
仅适用于Activity
方法。每个Activity
都提供了FrameLayout
,其ID为"@+id/content"
(即内容视图)。您在setContentView
中指定的任何视图都是该Activity
的视图。请注意,您还可以将视图实例传递给此方法,例如setContentView(new WebView(this));
您正在使用的方法版本将在幕后为您充气。
另一方面,片段有一个名为onCreateView
的生命周期方法,它返回一个视图(如果有的话)。最常见的方法是用XML扩展视图并在此方法中返回它。在这种情况下,你需要自己充气。片段没有setContentView
方法