您的位置:首页 > 移动开发 > Android开发

Android页面切换方法和区别 分类: Android开发 2014-05-30 10:54 53人阅读 评论(0) 收藏

2014-05-30 10:54 471 查看
通用的页面跳转方法有两种:

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;

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初始化www.2cto.com

button1=new Button(this);

button1.setLayoutParams(new
LinearLayout.LayoutParams(-2,-2));

button1.setText("Intent方式跳转");

button1.setOnClickListener(new OnClickListener(){

public void onClick(View v) {

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);

}

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;

}

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);

}

}

摘自
英雄小强
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐