1.java程序

/** *  */package com.itest;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/** * @author Robin */public class ITestP1Activity extends Activity {Button b1;Button b2;/** Called when the activity is first created. */@Overridepublic void onCreate( Bundle savedInstanceState ){super.onCreate( savedInstanceState );setContentView( R.layout.p11 );//查找控件b1 = (Button) findViewById( R.id.button1 );//设置监听b1.setOnClickListener( new OnClickListener() {@Overridepublic void onClick( View v ){jumpToDevicelistB1();}} );}void jumpToDevicelistB1(){setContentView( R.layout.p12 );//查找控件b2 = (Button)findViewById( R.id.button1 );//设置监听b2.setOnClickListener( new OnClickListener() {@Overridepublic void onClick( View v ){jumpToMainB2();}});}void jumpToMainB2(){setContentView( R.layout.p11 );//必须重新查找控件,否则监听不生效b1 = (Button) findViewById( R.id.button1 );//必须重新设置监听b1.setOnClickListener( new OnClickListener() {@Overridepublic void onClick( View v ){jumpToDevicelistB1();}} );}}


2.p11.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:id="@+id/textView1" android:text="p11"android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView><Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/changeText"></Button></LinearLayout>


3.p12.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:id="@+id/textView1" android:text="p12"android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView><Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/changeText"></Button></LinearLayout>


需要注意的是

1.在同一个Activity里切换布局容易出现控件监听失效的问题

原因是setContentView(int)方法是从布局文件中重新载入,所有动态设定都会失效。

解决方法重新执行oncreate里的方法进行初始化。

代码简化如下:

/** *  */package com.itest;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/** * @author Robin */public class ITestP1Activity extends Activity {Button b1;Button b2;/** Called when the activity is first created. */@Overridepublic void onCreate( Bundle savedInstanceState ){super.onCreate( savedInstanceState );initP11();}void initP11(){setContentView( R.layout.p11 );// 查找控件b1 = (Button) findViewById( R.id.button1 );// 设置监听b1.setOnClickListener( new OnClickListener() {@Overridepublic void onClick( View v ){initP12();}} );}void initP12(){setContentView( R.layout.p12 );// 查找控件b2 = (Button) findViewById( R.id.button1 );// 设置监听b2.setOnClickListener( new OnClickListener() {@Overridepublic void onClick( View v ){initP11();}} );}}


2.上述代码切换布局的时候会丢失对布局的动态修改(即切换后载入的是原始布局)

原因同上

解决办法使用setContentView(View)下个帖子中见详情。

更多相关文章

  1. Unity Android IL2CPP 编译报错的一种可能原因
  2. [Android]ButterKnife-无尽之刃-绑定视图控件和事件的快速开发工
  3. Android布局总结一:GridLayout布局(网格布局)
  4. android UI学习 -- 设置界面的布局(包括style的使用,selector的
  5. 【Android】界面布局之TableLayout(表格布局)
  6. Android布局编写示例【慢慢更新】
  7. Android 布局优化之include与merge
  8. 线性布局(LinearLayout)下layout_weight用法分析
  9. Android 布局(LinearLayout\TableLayout\RelativeLayout\Absol

随机推荐

  1. Android(安卓)URI
  2. Android开发实例详解之IMF(Android(安卓)S
  3. Android(安卓)横竖屏切换生命周期
  4. Android软件安全开发实践(下)
  5. android jni
  6. Android使用自定义字体的方法
  7. Android输入分析
  8. 数据存储与ContentProvider
  9. Android学习路线权威指南
  10. 在Android上实现HttpServer的示例代码