Android多Activity简介

原创 2015年11月20日 23:47:23

Android多Activity简介

一个Activity是一个界面,多个Activity表示多个界面。本文介绍多Activity的切换。

1.创建一个OtherActivity 将继承Activity并重写onCreate方法。

public class OtherActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.otheractivity);
	}

2.在MainActivity中 通过intent激活组件,一共有5种方式(本应用内4种,跨应用1种)

第一种方式:

Intent intent = new Intent()
intent.setClass(this,OtherActivity.class);//设置要激活的组件
startActivity(intent);

第二种方式:

Intent intent = new Intent()
intent.setClassName(this, "com.example.mulactivity.OtherActivity");
startActivity(intent);

第三种方式:

Intent intent = new Intent()
intent.setComponent(new ComponentName(this,OtherActivity.class));
startActivity(intent);

第四种方式:

Intent intent = new Intent(this,OtherActivity.class);
startActivity(intent);

第五种方式:

跨应用激活组件,依然使用setClassName 方法

第一个参数为package名,第二个参数是class名

Intent intent = new Intent();
intent.setClassName("com.example.mulactivity", "com.example.mulactivity.OtherActivity"


4.通过Intent传递参数,也介绍两种方式。一个是单个添加,一个是批量添加
第一种方式:
类似map的方式,设置key和value

intent.putExtra("name", "zhangxiao");
intent.putExtra("age",22);
//对应接收:
Intent intent = getIntent();//得到到激活它Intent对象
String name = intent.getStringExtra("name");
int age  = intent.getIntExtra("age",0);


第二种方式:
批量添加,使用Bundle对象。

Bundle bundle= new Bundle();//Map
bundle.putString("name","zhangxiao222");
bundle.putInt("age", 22);
intent.putExtras(bundle);//批量添加
//对应接收:
Bundle bundle = getIntent().getExtras();
String name = bundle.getString("name");
int age = bundle.getInt("age");
//事实上,通过查看getExtras()源码:
public Bundle getExtras() {
return (mExtras != null)
? new Bundle(mExtras)
: null;
 }
//将返回一个Bundle对象


5.使用startActivityForResult(Intent intent, int requestCode) 向MainActivity返回数据

在OtherActivity中,使用setResult(int resultCode, Intent data)来返回数据,这里定义一个button,当点击button时设置数据返回并关闭当前Activity

public void otherActivityClose(View v)
{
	Intent data = new Intent();
	data.putExtra("result","hello zhangxiao");
	setResult(20,data);//返回码 和数据 
	this.finish();
}

还不够,这个时候在MainActivity中要重写onActivityResult方法,针对不同的请求码和响应码做相应的业务处理。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	// TODO Auto-generated method stub
	//返回结果的位置
	if(resultCode ==20)
	{
		String result = data.getStringExtra("result");
		Toast.makeText(this, result, Toast.LENGTH_LONG).show();
	}
}



附:

MainActivity.java

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	//通过intent 激活组件(activity)附带数据
	public void openActivity(View v){
		
		
		//本应用激活组件
		/************第4种方法******************
		
		Intent intent = new Intent(this,OtherActivity.class);
		startActivity(intent);
		****************************************/
		
		
		/*************第1种方法***********************
		 
		intent.setClass(this,OtherActivity.class);//设置要激活的组件
		startActivity(intent);
		****************************************************/
		
		/**************第2种方法****************************
		
		intent.setClassName(this, "com.example.mulactivity.OtherActivity");
		startActivity(intent);
		****************************************************/
		
		/**************第3种方法*****************************
		 
		intent.setComponent(new ComponentName(this,OtherActivity.class));
		startActivity(intent);
		*****************************************************/
		
		/***************跨应用激活组件的方法***************
		Intent intent = new Intent();
		intent.setClassName("com.example.mulactivity", "com.example.mulactivity.OtherActivity");
		startActivity(intent);
		***************************************************/
		Intent intent = new Intent();
		intent.setClassName("com.example.mulactivity", "com.example.mulactivity.OtherActivity");
		/***************** 第1种方法***************
		intent.putExtra("name", "zhangxiao");
		intent.putExtra("age",22);
		*********************************************/
		/****************第2种方法********************************/
		Bundle bundle= new Bundle();//Map
		bundle.putString("name","zhangxiao222");
		bundle.putInt("age", 22);
		intent.putExtras(bundle);//批量添加 
		
		startActivityForResult(intent, 200);
		//startActivity(intent);
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		//请求的位置,返回结果的位置
		if(resultCode ==20)
		{
			String result = data.getStringExtra("result");
			Toast.makeText(this, result, Toast.LENGTH_LONG).show();
		}
	}
	

}


OtherActivity.java

public class OtherActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.otheractivity);
		Bundle bundle = getIntent().getExtras();
		String name = bundle.getString("name");
		int age = bundle.getInt("age");
		//Intent intent = getIntent();//得到到激活它Intent对象
		//String name = intent.getStringExtra("name");
		//int age  = intent.getIntExtra("age",0);
		TextView textView=(TextView)this.findViewById(R.id.content);
		textView.setText("name:"+name+" age:"+age);
	}
	public void otherActivityClose(View v)
	{
		Intent data = new Intent();
		data.putExtra("result","hello zhangxiao");
		setResult(20,data);//返回码 和数据 
		this.finish();
	}
	
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android——Activity简介

绝大部分Activity是用于和用户交互的,Activity会创建一个交互窗口,可以通过调用setContentView(View)来放置一个布局在activity的窗口中。 通常是在PhoneWi...

Android 学习笔记之 Activity 简介

什么是 Activity Activity 是 Android 应用程序的界面; 每个应用程序往往都存在多个 Activity ,即存在多个界面,各个界面之间根据一定的逻辑规则互换显示; Activi...

Android系统中的Activity简介

Android系统中的Activity简介 Android系统中的Activity简介写一次博客就是一次成长,回顾一篇博客就是一次升华! Activity简介 七个生命周期方法 特定环境下生命周期方法...

Android四大组件之Activity简介

本文对安卓四大组间之一的Activity进行简要的介绍和说明。

Android之Starting an Activity for a Result例子简介

有时候我们由一个Activity启动另一个Activity的时候,我们需要从目标Activity中得到处理的信息返回源Activity中,这里就需要用到有返回结果的Activity. 我们源Acti...

android Activity简介

文章来源:http://developer.android.com/guide/topics/fundamentals/activities.html 一个活动是一个应用程序...

[android]组件之一Activity简介

Activity: Android四大组件之一 Context对象 是一个控制器 包含一个界面 Activity  startActivity(Intent intent)---启动另外一个...

Android周学习Step By Step(7)--Activity简介

Activity可以算是Android开发者遇到最频繁,也是最基本的模块之一。在Android的程序当中,Activity一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于...

Android四大组件---Activity简介

概述 Activities 是一个程序的组件之一。它的主要功能是提供界面。

Android 多Activity实现页面转换

  • 2011年11月06日 13:38
  • 47KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android多Activity简介
举报原因:
原因补充:

(最多只允许输入30个字)