setContentView和LayoutInflater之间的区别

我正在创建一个包含多个片段的选项卡列表。 我注意到,在main活动中,我使用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期间使用吗? 在什么情况下我应该选择其中之一?

setContentView只是一个Activity方法。 每个Activity都提供一个ID为"@+id/content"FrameLayout (即内容视图)。 您在setContentView指定的任何视图都将是该Activity的视图。 请注意,您还可以将视图实例传递给此方法,例如setContentView(new WebView(this)); 您正在使用的方法版本将在幕后为您充气。

另一方面,片段有一个名为onCreateView的生命周期方法,它返回一个视图(如果有的话)。 最常见的方法是用XML扩展视图并在此方法中返回它。 在这种情况下,你需要自己充气。 片段没有setContentView方法