通用的页面跳转方法有两种:
1、Intent
Intent适合Activity与Activity之间的跳转,按返回键可以直接返回前一页面
缺点:需要到Manifest注册Activity
2、setContentView
适合同一Activity里的不同View之间跳转
优点:按返回键不会返回到前一页面,需要自己添加按键监听代码来实现
1、Intent


1 import android.app.Activity; 2 import android.content.Intent; 3 import android.os.Bundle; 4 import android.view.KeyEvent; 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.widget.*; 8 9 public class IntentTest extends Activity { 10 11 private LinearLayout mainView=null; 12 private Button button1=null; 13 private Button button2=null; 14 15 private LinearLayout layout=null; 16 private TextView tv=null; 17 18 /* 19 * 由于setContentVeiw()函数返回是void,系统中没有提供获取当前View的函数 20 * 所以此处添加一个整形变量用来指示当前View的id 21 */ 22 private int currentViewId; 23 24 public void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 //tv初始化 27 tv=new TextView(this); 28 tv.setText("这是layout里面的tv"); 29 //layout初始化 30 layout=new LinearLayout(this); 31 layout.setId(100);//这里需要指定id,否则默认的id会和mainView一样,都是-1 32 layout.setLayoutParams(new LinearLayout.LayoutParams(-1,-1)); 33 layout.addView(tv); 34 //button1初始化 35 button1=new Button(this); 36 button1.setLayoutParams(new LinearLayout.LayoutParams(-2,-2)); 37 button1.setText("Intent方式跳转"); 38 button1.setOnClickListener(new OnClickListener(){ 39 public void onClick(View v) { 40 /*此处用Intent来实现Activity与Activity之间的跳转*/ 41 Intent intent=new Intent(); 42 intent.setClass(IntentTest.this,MyActivity.class); 43 //Intent intent=new Intent(IntentTest.this,MyActivity.class); 44 startActivity(intent); 45 } 46 }); 47 //button2初始化 48 button2=new Button(this); 49 button2.setLayoutParams(new LinearLayout.LayoutParams(-2,-2)); 50 button2.setText("setContentView方式跳转"); 51 button2.setOnClickListener(new OnClickListener(){ 52 public void onClick(View v) { 53 //此处用setContentView方式来实现统一Activity不同View跳转 54 setCurrentView(layout); 55 } 56 }); 57 //mianView初始化 58 mainView=new LinearLayout(this); 59 mainView.setId(1000);//指定id 60 mainView.setLayoutParams(new LinearLayout.LayoutParams(-1,-1)); 61 mainView.setOrientation(LinearLayout.VERTICAL); 62 mainView.addView(button1); 63 mainView.addView(button2); 64 //显示mainView 65 setCurrentView(mainView); 66 } 67 68 /* 69 * 这里重写onKeyDown()函数,实现返回键的监听 70 * 如果通过显示的View对keyListener进行监听,则返回键监听不到 71 * 所以此处是通过在Activity里面重写onKeyDown()函数来实现监听 72 * 此处如果不拦截监听的话,在显示layout后按返回键则直接执行退出程序 73 */ 74 public boolean onKeyDown(int keyCode, KeyEvent event) { 75 if (keyCode == KeyEvent.KEYCODE_BACK) { 76 if(currentViewId==layout.getId()){ 77 setCurrentView(mainView); 78 }else{ 79 System.exit(0); 80 } 81 return false; 82 } 83 return false; 84 } 85 86 /*自定义函数setCurrentView()*/ 87 public void setCurrentView(View view){ 88 currentViewId=view.getId(); 89 //此处用setContentView方式来实现统一Activity不同View跳转 90 setContentView(view); 91 } 92 }
2、setContentView


package com.lyj.demo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; /** * * @author lyj * 实现不同Layout的转换功能,setContentview()用法; */ public class setContentViewDemo extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 以findViewById()取得Button对象并添加事件onClickLisener Button button1=(Button)findViewById(R.id.bt1); button1.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { goToLayout2(); }}); } // 将layout由main.xml切换成mylayout.xml public void goToLayout2() { // 将layout改成mylayout setContentView(R.layout.mylayout); Button b2 = (Button) findViewById(R.id.bt2); b2.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { goToLayout1(); } }); } // 将layout由mylayout.xml切换成main.xml public void goToLayout1() { setContentView(R.layout.main); Button bt1 = (Button) findViewById(R.id.bt1); bt1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { goToLayout2(); } }); } }
main.xml


1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 > 7 <TextView 8 android:layout_width="fill_parent" 9 android:layout_height="wrap_content" 10 android:text="欢迎来到小李的博客" 11 /> 12 <Button 13 android:id="@+id/bt1" 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:text="点击进入Layout2" 17 /> 18 </LinearLayout>
需要跳转到的布局文件mylayout.xml


1 ?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 android:background="#ffffffff" 7 > 8 <TextView 9 android:layout_width="fill_parent" 10 android:layout_height="wrap_content" 11 android:text="Welcom to my bog" 12 /> 13 <Button 14 android:id="@+id/bt2" 15 android:layout_width="fill_parent" 16 android:layout_height="wrap_content" 17 android:text="点击进入Laout1" 18 /> 19 </LinearLayout>
注:本文章部分内容可能引用于网络,本人进行修改或注释,希望能够帮到更多的人。如有侵权,请留言,本人将删除。