关闭

Android多Activity简介

标签: android界面
317人阅读 评论(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网站的观点或立场
    个人资料
    • 访问:439323次
    • 积分:10587
    • 等级:
    • 排名:第1600名
    • 原创:581篇
    • 转载:83篇
    • 译文:1篇
    • 评论:29条
    博客专栏
    最新评论