首页 > 移动开发 > Android页面切换方法和区别Android页面切换方法和区别

Android页面切换方法和区别Android页面切换方法和区别

摘要: 通用的页面跳转方法有两种:1、IntentIntent适合Activity与Activity之间的跳转,按返回键可以直接返回前一页面缺点:需要到Manifest注册Activity2、setContentView适合同一Activity里的不同View之间跳转优点:按返回 ...

通用的页面跳转方法有两种:

1、Intent

Intent适合Activity与Activity之间的跳转,按返回键可以直接返回前一页面

缺点:需要到Manifest注册Activity

2、setContentView

适合同一Activity里的不同View之间跳转

优点:按返回键不会返回到前一页面,需要自己添加按键监听代码来实现

[java][/java] 

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

 

[java][/java] 

  1. import android.app.Activity;
  2. import android.os.Bundle;
  3. import android.widget.TextView;
  4. public class MyActivity extends Activity{
  5.     public void onCreate(Bundle savedInstanceState) {
  6.         super.onCreate(savedInstanceState);
  7.         TextView tv=new TextView(this);
  8.         tv.setText("我是MyActivity里的tv");
  9.         setContentView(tv);
  10.     }
  11. }

本文固定链接: http://www.devba.com/index.php/archives/1280.html | 开发吧

报歉!评论已关闭.