Android多Activity简介
2015-11-20 23:47
423 查看
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滑动事件监听
- Android API级别
- 王学岗属性动画上(七)----------AnimatorSet动画集合
- Mac AndroidStudio 错误
- Android 基本知识(一)
- 用Kotlin开发Android应用(I):介绍
- android studio 问题记录
- Android LayerDrawable 和 Drawable.Callback
- Android 注册
- Android之Handler用法总结
- Android 在WindowManager添加View进行绘制时,限制在Window内部绘制和允许绘制到窗口之外区域的方法
- Android Studio的Gradle添加重复依赖的问题
- Android自动获得短信验证码
- Android应用包名package和activity名称查看
- android studio 配置
- 《第一行代码--Android》读书笔记之数据存储
- android实现侧边导航栏
- Windows下Android开发环境的搭建
- Android应用程序权限
- Android:简单实现美女扒衣服小游戏