Android页面切换方法和区别

本文详细介绍了Android应用开发中两种常见的页面跳转方法:Intent和setContentView。通过具体实例展示了这两种方法的应用场景及优缺点,帮助开发者更好地理解并选择合适的页面跳转方式。

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

1、Intent

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

缺点:需要到Manifest注册Activity

2、setContentView

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

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

 

1、Intent

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

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

View Code
 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

 

View Code
 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> 

 

 注:本文章部分内容可能引用于网络,本人进行修改或注释,希望能够帮到更多的人。如有侵权,请留言,本人将删除。

转载于:https://www.cnblogs.com/chinatofu/archive/2012/08/08/2628204.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值