android使用include调用内部组件的方法
本文实例讲述了android使用include调用内部组件的方法。分享给大家供大家参考。具体如下:
例子一:
sublayout.xml
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#505050" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="SubLayout" /> <Button android:id="@+id/mybutton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="AButton" /> </LinearLayout> mail.xml <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <includeandroid:id="@+id/main1"layout="@layout/sublayout"/> <includeandroid:id="@+id/main2"layout="@layout/sublayout"/> <Button android:id="@+id/startanotheractivity" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="StartAnotherActivity" /> </LinearLayout>
如何调用组件include进来的组件呢。
packagecom.AndroidIncludeLayout;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.Toast;
publicclassAndroidIncludeLayoutextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewsubLayout1=(View)findViewById(R.id.main1);
ViewsubLayout2=(View)findViewById(R.id.main2);
ButtonmyButton_main1=(Button)subLayout1.findViewById(R.id.mybutton);
ButtonmyButton_main2=(Button)subLayout2.findViewById(R.id.mybutton);
ButtonstartAnotherActivity=(Button)findViewById(R.id.startanotheractivity);
startAnotherActivity.setOnClickListener(newButton.OnClickListener(){
@Override
publicvoidonClick(Viewarg0){
//TODOAuto-generatedmethodstub
Intentintent=newIntent();
intent.setClass(AndroidIncludeLayout.this,AnotherActivity.class);
startActivity(intent);
}});
myButton_main1.setOnClickListener(newButton.OnClickListener(){
@Override
publicvoidonClick(Viewarg0){
//TODOAuto-generatedmethodstub
Toast.makeText(AndroidIncludeLayout.this,"Button1Pressed",Toast.LENGTH_LONG).show();
}});
myButton_main2.setOnClickListener(newButton.OnClickListener(){
@Override
publicvoidonClick(Viewarg0){
//TODOAuto-generatedmethodstub
Toast.makeText(AndroidIncludeLayout.this,"Button2Pressed",Toast.LENGTH_LONG).show();
}});
}
}
但是如果include进来的xml,是
sublayout.xml
<?xmlversion="1.0"encoding="utf-8"?> <mergexmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="SubLayout" /> <Button android:id="@+id/mybutton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="AButton" /> </merge>
则以上的方法将不能实现,会报空指针。
因为用了merge后,导入进来就相当于是当前view下的组件了,所以直接findViewById就可以了。
这样的话。。。可以解决了include多次同一个layout的问题
希望本文所述对大家的Android程序设计有所帮助。