您的位置:首页 > 移动开发 > Android开发

Android 多个Activity之间跳转和通信

2014-03-26 22:23 232 查看
在开发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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: