关闭

Android多Activity简介

标签: android界面
365人阅读 评论(0) 收藏 举报
分类:

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


1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

单Activity多Fragment模式快速构建一个App

转载地址:http://www.tuicool.com/articles/YBf6BnV 原地址:http://blog.csdn.net/shan_yao/article/details/52152804?utm_source=tuicool&utm_medium=referral ...
  • l_215851356
  • l_215851356
  • 2016-09-06 16:19
  • 953

Activity——简介和使用

Android为我们提供了四种应组件,分别为Activity、Service、Broadcast receivers和Content providers,这些组建也就是我们开发一个Android应用程序的基石。系统可以通过不同组建提供的切入点进入到开发的应用程序中。对用户来说不是所有的组建都是实际的...
  • zy1235678
  • zy1235678
  • 2014-03-08 19:19
  • 4499

超级封装让你的项目搭建事半功倍-单Activity多Fragment模式

上篇文章介绍了单Activity多Fragment模式去构建一个项目的简单框架,这种模式可以带给我们诸多好处。本篇我将在上一篇那个模式的基础上对这个app里面的一些类进行封装,可以让我们的项目搭建事半功倍,效率更高。
  • shan_yao
  • shan_yao
  • 2016-08-10 11:11
  • 5634

单Activity多Fragment模式快速构建一个App

前言 自从除了Fragment之后,我便对它情有独钟。从我开始的学习,到现在我做了多个app,我一直在使用Fragment,并且形成了我自己的app架构模式“单Activity多Fragment”,即使用一个Activity多个Fragment去构建一个App的整体架构,我记得我有一个App其中就...
  • shan_yao
  • shan_yao
  • 2016-08-08 16:03
  • 9125

Activity工作流——初识 Activiti

Activiti介绍 OA(Office Automation,办公自动化)是将现代办公和计算机网络功能结合起来的一种新型办公方式。OA的核心应用包括流程管理、协同工作、沟通工具、信息中心等。工作流(Work Flow):对工作当中涉及到的流程、业务需求的抽象;在OA、CRM、ERP等各种系统中随...
  • YEN_CSDN
  • YEN_CSDN
  • 2016-12-24 17:41
  • 5128

【android】应用架构一一一一一Activity和Fragment的对比分析

这里主要就是讨论一个应用程序的UI组件,是全用Activity还是全用Fragment,或者是二者皆有,以及使用Activity和Fragment的一些注意事项。   Activity or Fragment 从API 11,Honeycomb开始,Google在Andr...
  • xiechengfa
  • xiechengfa
  • 2015-11-04 17:13
  • 4047

Android 多个Activity间对象共享

Android 多个Activity间对象共享
  • wangzhiyu1980
  • wangzhiyu1980
  • 2015-11-30 08:01
  • 2357

Android开发之Service与多个Activity通信

本文转载自:http://www.cnblogs.com/ivan-xu/archive/2014/11/02/4069479.html,感谢原文作者的贡献 !
  • itluochen
  • itluochen
  • 2016-08-09 23:18
  • 1967

WmS简介(三)之Activity窗口是如何创建的?基于Android7.0源码

OK,在前面两篇博客中我们分别介绍了WmS中的token,同时也向小伙伴们区分了Window和窗口的区别,并且按照type值的不同将Android系统中的窗口分为了三大类,那么本篇博客我们就来看看应用窗口(即Activity所对应的窗口)到底是怎么创建出来的,如果小伙伴们尚不理解WmS中的token...
  • u012702547
  • u012702547
  • 2016-12-01 16:38
  • 1507

Activity 的介绍和使用(一)

Activity是什么Activity是Android的四大组件之一。是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示;以此来为用户提供交互的入口。在Android App 中只要能看见的几...
  • litengit
  • litengit
  • 2016-04-05 15:57
  • 5089
    个人资料
    • 访问:611979次
    • 积分:12147
    • 等级:
    • 排名:第1415名
    • 原创:587篇
    • 转载:83篇
    • 译文:1篇
    • 评论:44条
    博客专栏
    最新评论