Android页面切换方法和区别
2014-05-30 10:54
357 查看
通用的页面跳转方法有两种:
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);
}
}
摘自
英雄小强
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);
}
}
摘自
英雄小强
相关文章推荐
- Android页面切换方法和区别
- Android页面切换方法和区别
- Android页面切换方法和区别
- Android页面切换方法和区别
- Android页面切换方法和区别
- Android页面切换方法和区别
- Android页面切换方法和区别 分类: Android开发 2014-05-30 10:54 53人阅读 评论(0) 收藏
- Android页面切换方法和区别
- Android编程实现ViewPager多页面滑动切换及动画效果的方法
- Android多页面切换,保持Java中Socket长连接之静态方法
- Android使用多个Acitvity切换页面的方法_以及切入的动画效果
- Android 语言切换的方法,华为、小米手机语言切换语言后部分页面会自动变为简体中文
- Android 之打造仿微信页面切换公共方法及实现
- Android 真机,微信打开 H5,切换到 webview,能通过 webdriver 方法操作页面元素,然后链接到新的 H5 页面后,无法操作元素,appium 服务器没有收到 response,
- android页面切换和常用方法的执行顺序
- android RecycleView 嵌套问题切换页面跳动问题、嵌套展开显示不全问题处理方法
- Servlet页面跳转实现方法的区别
- 关于Android横竖屏切换的解决方法
- Android中Calendar与Date的区别以及消除时区对日期操作影响的方法
- C#中跳转页面有那几种方法,简述其区别