Question

The Android developer guide seems to suggest that Activity.setContentView() can only be called with a layout ID (R.layout.*). However, I can see view IDs (R.id.*) being used to call the method. For example, in org/xbmc/android/widget/slidingtabs/SlidingTabActivity.java of XBMC, I can see the following code:

private void ensureTabHost() {
    if (mTabHost == null) {
        this.setContentView(R.id.slidingtabhost);
    }
}

So, what does it mean to call setContentView() with a view ID? Thanks!

Additional question based on comment - is "setContentView(viewId);" equivalent to "View v = findViewById(viewId); setContentView(v);"?

No correct solution

OTHER TIPS

Not

that Activity.setContentView() can only be called with a layout ID (R.layout.)

Just any view id can be called by the setContentView().

And layout is also a view!

I think the document should say:Set the activity content from a view(not only a layout) resource. The resource will be inflated, adding all top-level views to the activity. Actually ,it works like this: If you make a setConentView(R.layout.my_layout); then android os will do the following works:

LayoutInflater inflater= (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

 View layout = inflater.inflate(R.layout.my_layout, null); 
setConentView(layout);

if you make a setContentView(R.id.myview);it is also the same way to inflate.

LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);


View myview = inflater.inflate(R.id.myview, null);
setConentView(myview);  ` 

So I say they are the same.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top