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

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

}

}


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