Android四大组件之Activity(跳转与传值)

一、跳转

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同时满足时传值



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值