大连仟亿科技
客服中心
  • 电话
  • 电话咨询:0411-39943997
  • 手机
  • 手机咨询:15840979770
    手机咨询:13889672791
网络营销 >更多
您现在的位置:仟亿科技 > 新闻中心 > 常见问题

Android安卓页面切换办法和差别

作者:billionnet 发布于:2012/3/28 17:54:17 点击量:

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


1、Intent


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


毛病:须要到Manifest注册Activity


2、setContentView


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


长处:按返回键不会返回到前一页面,须要本身添加按键监听代码来实现


 


只切换Layout运行速度会快点,因为启动activity是最耗时的。
数据传递也简单,不消Intent.setExtra之类的。
毛病是所有控件的事务处理惩罚、加载之类的操纵全集中由activity经管,拆分不敷清楚 


 


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;

public class IntentTest extends Activity {
    
    private LinearLayout mainView=null;
    private Button button1=null;
    private Button button2=null;
    
    private LinearLayout layout=null;
    private TextView tv=null;
    
    /*
     * 因为setContentVeiw()函数返回是void,体系中没有供给获取当前View的函数
     * 所以此处添加一个整形变量用来指导当前View的id
     */
    private int currentViewId;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //tv初始化
        tv=new TextView(this);
        tv.setText("这是layout里面的tv");
        //layout初始化
        layout=new LinearLayout(this);
        layout.setId(100);//这里须要指定id,不然默认的id会和mainView一样,都是-1
        layout.setLayoutParams(new LinearLayout.LayoutParams(-1,-1));
        layout.addView(tv);
        //button1初始化
        button1=new Button(this);
        button1.setLayoutParams(new LinearLayout.LayoutParams(-2,-2));
        button1.setText("Intent体式格式跳转");
        button1.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                /*此处用Intent来实现Activity与Activity之间的跳转*/
                Intent intent=new Intent();
                intent.setClass(IntentTest.this,MyActivity.class);
                //Intent intent=new Intent(IntentTest.this,MyActivity.class);
                startActivity(intent);
            }
        });
        //button2初始化
        button2=new Button(this);
        button2.setLayoutParams(new LinearLayout.LayoutParams(-2,-2));
        button2.setText("setContentView体式格式跳转");
        button2.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                //此处用setContentView体式格式来实现同一Activity不合View跳转
                setCurrentView(layout);
            }
        });
        //mianView初始化
        mainView=new LinearLayout(this);
        mainView.setId(1000);//指定id
        mainView.setLayoutParams(new LinearLayout.LayoutParams(-1,-1));
        mainView.setOrientation(LinearLayout.VERTICAL);
        mainView.addView(button1);
        mainView.addView(button2);
        //显示mainView
        setCurrentView(mainView);
    }
    
    /*
     * 这里重写onKeyDown()函数,实现返回键的监听
     * 若是经由过程显示的View对keyListener进行监听,则返回键监听不到
     * 所以此处是经由过程在Activity里面重写onKeyDown()函数来实现监听
     * 此处若是不阻碍监听的话,在显示layout后按返回键则直接履行退出法度
     */
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if (keyCode == KeyEvent.KEYCODE_BACK) { 
            if(currentViewId==layout.getId()){
                setCurrentView(mainView);
            }else{
                System.exit(0);
            }
            return false; 
        } 
        return false; 
    }
    
    /*自定义函数setCurrentView()*/
    public void setCurrentView(View view){
        currentViewId=view.getId();
        //此处用setContentView体式格式来实现同一Activity不合View跳转
        setContentView(view);
    }
}


import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MyActivity extends Activity{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv=new TextView(this);
        tv.setText("我是MyActivity里的tv");
        setContentView(tv);
    }
}


 



分享到:


评论加载中...
内容:
评论者: 验证码:
  

Copyright@ 2011-2017 版权所有:大连仟亿科技有限公司 辽ICP备11013762-1号   google网站地图   百度网站地图   网站地图

公司地址:大连市沙河口区中山路692号辰熙星海国际2215 客服电话:0411-39943997 QQ:2088827823 42286563

法律声明:未经许可,任何模仿本站模板、转载本站内容等行为者,本站保留追究其法律责任的权利! 隐私权政策声明