一、跳转
a,三种显式跳转
1,Intent intent = new Intent(本Activity.this,要跳转的Activity.class);(常用)
2,Intend intent =new Intent();
intent.setClassName(本Activiy.this,"包名.类名.class");
3,ComponentName componetName=new ComponentName(本Activity.this,要跳转的Activity.class);
b,隐式跳转
方法:在AndroidManifest.xml文件中给要跳转的activity添加意图过滤器
具体实现:
1,在要跳转的Activity的清单文件下:
<intent-filter>
<action android:name="name" /> //name是自定义的
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
2,在启动跳转的Activity内
Intent intent=new Intent();
intent.setAction(name);//上面要跳转的清单文件自定义的name
StartActivity(intent);
二,Activity跳转传值
1,putExtra(**)
例如:从A Activity 传到 B Activity
A:intent.putExtra("name","张三");
B:String name=getIntent().getStringExtra("name");
2,用bundle传值
例如:从A Activity 传到 B Activity
A:1,创建bundle
Bundle bundle = new Bundle();
2,在bundle中存值
bundle.putString("name","李四");
bundle.putInt("age",20);
3将bundle放入intent中(两种方法)
a种:intent.putExtra("arr",bundle) //arr为自定义
b种:intent.putExtras();
B:获取bundle方式有两种,与上面两种传值对应
1,,Bundle bundle=getIntent().getExtra("arr");
String name=bundle.getString("name");
int age=bundle.getInt("age");
2,Bundle bundle=getIntent().getExtras()
String name=bundle.getString("name");
int age=bundle.getInt("age");
用bundle传对象
1,建一个实体类A,对A实现序列化(注意)
2,传值
Intent intent=new Intent(自己的Activity.this,要传值的Activity.class);
Bundle bundle=new Bundle();
bundle.putSerializable("键值",A类对象);
intent.putExtras(bundle);
startActivity(intent);
3,接收
Bundle bundle=getIntent().getExtras(); A a= (A) bundle.get("键值");
3,带值回传
例如:从A Activity 跳转到 B Activity 从 B Activity 向 A Activity回传
1,A中定义一个intent,给intent存值
StartActivityForResult(intent,请求码);
2.B中定义一个intent,给intent存值
setResult(应答码,intent);
3,重写onActivityResult方法(必须在onCreate方法外)
当requestCode和resultCore同时满足时传值