setContentView和LayoutInflater之间的区别

我正在创build一个带有几个片段的选项卡列表。 我注意到,在主要活动中,我使用setContentView来获取布局xml,并使用findViewById来获取相应的UI元素configuration。

 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来创build一个对象的,为什么会有区别? 第一个在onCreate使用,第二个在onCreateView ? 在什么情况下我应该select其中之一?

Solutions Collecting From Web of "setContentView和LayoutInflater之间的区别"

setContentView只是一个Activity方法。 每个Activity都带有一个ID为"@+id/content" (即内容视图)的FrameLayout 。 无论您在setContentView指定哪个视图都是该Activity的视图。 请注意,您也可以将视图的实例传递给此方法,例如setContentView(new WebView(this)); 您正在使用的方法的版本会在幕后夸大您的视图。

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