Android多Activity简介

来源:互联网 发布:centos 安装不上ibus 编辑:程序博客网 时间:2024/06/06 10:05

Android多Activity简介

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

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

public class OtherActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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();//Mapbundle.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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic 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();//Mapbundle.putString("name","zhangxiao222");bundle.putInt("age", 22);intent.putExtras(bundle);//批量添加 startActivityForResult(intent, 200);//startActivity(intent);}@Overrideprotected 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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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
原创粉丝点击