1、用setContentView方法

各个文件定义

layout2.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"
android:background
="@drawable/black"
>
<TextView
android:layout_width="fill_parent"
android:layout_height
="wrap_content"
android:text
="@string/hello2"
/>
<Button
android:id="@+id/button02"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content"
android:text
="@string/buttontext2"/>
</LinearLayout>

main.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"
android:background
="@drawable/white"
>
<TextView
android:layout_width="fill_parent"
android:layout_height
="wrap_content"
android:text
="@string/hello1"
/>
<Button
android:id="@+id/button01"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content"
android:text
="@string/buttontext1"/>
</LinearLayout>

color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<drawable name="white">#123123</drawable>
<drawable name="black">#000001</drawable>
</resources>

strings.xml

代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, LayoutChangeTest!</string>
<string name="app_name">LayoutChangeTest</string>
<string name="hello1">Hello,我是布局1</string>
<string name="hello2">Hello,我是布局2</string>
<string name="buttontext1">我是button1,按我跳转到layout2</string>
<string name="buttontext2">我是button2,按我跳转到layout1</string>
</resources>

java代码

代码
package com.lay.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
public class LayoutChangeTest extends Activity {
/** Called when the activity is first created. */
private Button button1;
private Button button2;
private String TAG="LayoutChangeTest";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1
=(Button)findViewById(R.id.button01);
button1.setOnClickListener(listener);
}
public OnClickListener listener = new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == R.id.button01) {
//把button2的再次定义和监听放到这儿不行
/* button2 = (Button) findViewById(R.id.button02);
button2.setOnClickListener(listener);
*/
gotoLayout2();
//方法1:可以把button2的定义和监听放到这里
/*button2 = (Button) findViewById(R.id.button02);
button2.setOnClickListener(listener);
*/
}
else if (v.getId() == R.id.button02) {
gotoLayout1();
}
else {
Log.v(TAG,
"dddd");
}
}
};

private void gotoLayout2() {
setContentView(R.layout.layout2);
//方法2可以把button2的定义和监听放到这里
button2 = (Button) findViewById(R.id.button02);
button2.setOnClickListener(listener);
}
private void gotoLayout1() {
setContentView(R.layout.main);
button1
= (Button) findViewById(R.id.button01);
button1.setOnClickListener(listener);

}
}

分析:必须在

gotoLayout1()和
gotoLayout2()中重新获取button对象,因为还是同一个activity,但是view变了,因为视图一改变,所以要重新获取view,并且重新再监听,这样就可以实现两个布局之间的相互转换了。。
注意2点:1、重新获取view,此中是button对象
               2、重新监听
posted on 2010-11-29 17:52  snowdrop  阅读(12750)  评论(0编辑  收藏  举报