I have an Activity and associated with it layout. Also I have another layout with some Views. I want to initialize a variable (TextView) from my Activity using a View from that standalone layout. I always get null.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(s开发者_开发百科avedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.button); // This is OK
// because R.id.button is from R.layout.main layout
tvOne = (TextView) findViewById(R.id.first_item); // This is not OK
// because R.id.first_item is from another layout.
}
You can't instantiate a view within another layout, but you can instantiate a layout which can be the view you want.
LayoutInflater inflater = getLayoutInflater();
TextView text = (TextView) inflater.inflate(R.layout.contenttext, yourRootView, false);
Here would be the corresponding layout (contenttext.xml):
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"/>
This is the correct behaviour, because findViewById() will only search for views set in the view hierarchy passed to setContentView()
加载中,请稍侯......
精彩评论