Android 多个Activity之间跳转和通信

在开发Android App时,很多App都有很多activity,这些activity是通过Intent对象实现跳转和传递数据的。

比如有两个activity: MainActivity和FirstActivity,如果点击MainActivity上的某个按钮后要跳转到FirstActivity上,有下面四种跳转方式。

方式1:

Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);
startActivity(intent);

方式2:

Intent intent = new Intent();
intent.setClassName(this, "com.lk.multiactivity.FirstActivity");
startActivity(intent);


方式3: 值得一提的是,以这种方式激活Activity,可以跨应用激活

Intent intent = new Intent();
intent.setClassName("com.lk.multiactivity", "com.lk.multiactivity.FirstActivity");
startActivity(intent);


方式4:

Intent intent = new Intent(this, FirstActivity.class);
startActivity(intent);

在两个Activity之间跳转时,有两种方式可以传递和接受数据

/**
 * 第一种传递数据的方式
 */
Intent intent = new Intent(this, FirstActivity.class);
intent.putExtra("name", "张三");
intent.putExtra("age", 39);
startActivity(intent);

/**
 * 第二种传递数据的方式
 */
Intent intent = new Intent(this, FirstActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name", "李四");
bundle.putInt("age", 33);
intent.putExtras(bundle );
startActivity(intent);

// 得到启动这个activity的intent
Intent intent = getIntent();
/**
 * 第一种接受数据的方式
 */
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 0);

// 得到启动这个activity的intent
Intent intent = getIntent();
/**
 * 第二种接受数据的方式
 */
Bundle bundle = intent.getExtras();
String name = bundle.getString("name");
int age = bundle.getInt("age");


有时,我们还有这样一种case, 当一个Activity激活另一个Activity后,在另一个Activity上做一些事,当关闭另一个Activity时,传递一些数据到原Activity中,我们可以通过这种方式来打开和关闭子Activity.

主Activity

public void goSecondPage(View view) {
	Intent intent = new Intent(this, SecondActivity.class);
	// requestCode: 表示你从哪发出的请求
	startActivityForResult(intent, 1);
}

/**
 * 当通过startActivityForResult打开的activity关闭后,系统就会调用该方法。
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	if(data != null) {
		String email = data.getStringExtra("email");
		Toast.makeText(this, email, Toast.LENGTH_SHORT).show();
	}
	super.onActivityResult(requestCode, resultCode, data);
}

SecondActivity:

/**
 * 关闭该Activity
 * @param view
 */
public void close(View view) {
	Intent data = new Intent();
	data.putExtra("email", "zhangsan@hotmail.com");
	setResult(200, data);
	finish();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值