Android开发人员指南似乎建议只能使用布局ID(R.layout。*)调用Activity.setContentView()。但是,我可以看到用于调用该方法的视图ID(R.id. *)。例如,在XBMC的org / xbmc / android / widget / slidingtabs / SlidingTabActivity.java中,我可以看到以下代码:
private void ensureTabHost() {
if (mTabHost == null) {
this.setContentView(R.id.slidingtabhost);
}
}
那么,使用视图ID调用setContentView()是什么意思?谢谢!
基于评论的其他问题 - “setContentView(viewId);
”等同于“View v = findViewById(viewId); setContentView(v);
”?
答案 0 :(得分:0)
不
只能使用布局ID(R.layout。)调用Activity.setContentView()。
setContentView()可以调用任何视图id。
布局也是一种观点!
答案 1 :(得分:0)
我认为该文档应该说:从视图(不仅是布局)资源设置活动内容。资源将膨胀,将所有顶级视图添加到活动中。实际上,它的工作方式如下:如果你创建了一个setConentView(R.layout.my_layout);然后android os将做以下工作:
LayoutInflater inflater= (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.my_layout, null);
setConentView(layout);
如果你创建一个setContentView(R.id.myview);它也是同样的膨胀方式。
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View myview = inflater.inflate(R.id.myview, null);
setConentView(myview); `
所以我说他们是一样的。