第一个活动(MainActivity)
activity_main.xml文件
<!-- 输入框,将值传到SecondActivity活动进行显示 -->
<EditText
android:id="@+id/etName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/btnStart2"
android:layout_below="@+id/btnStart2"
android:ems="10" >
<requestFocus />
</EditText>
<!-- 启动活动2 -->
<Button
android:id="@+id/btnStart2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="启动活动2"
android:onClick="start2" />
<!-- 启动活动3 -->
<Button
android:id="@+id/btnStart3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/etName"
android:layout_below="@+id/etName"
android:layout_marginTop="48dp"
android:text="启动活动3"
android:onClick="start3"/>
MainActivity.java文件
/**
* 跳转到SecondActivity活动中
*
* @param v
*/
public void start2(View v) {
String name = etName.getText().toString();
// 准备意图
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("name", name);
// 出发(单程)
// startActivity(intent);
// 出发(往返),第一个参数是意图,第二个是请求码
startActivityForResult(intent, 100);
}
/**
* 跳转到ThirdActivity活动中
*
* @param v
*/
public void start3(View v) {
String name = etName.getText().toString();
// 准备意图
Intent intent = new Intent(MainActivity.this, ThirdActivity.class);
intent.putExtra("name", name);
// 出发(单程)
// startActivity(intent);
// 出发(往返),第一个参数是意图,第二个是请求码
startActivityForResult(intent, 200);
}
/**
* 隐式跳转到FourthActivity活动中
*
* @param v
*/
public void start4(View v) {
Intent intent=new Intent("com.example.activitytest");
// 出发(往返),第一个参数是意图,第二个是请求码
startActivityForResult(intent, 300);
}
/**
* 重写Activity包的onActivityResult()方法
* requestCode 请求码
* resultCode 响应码
* data 意图
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//先switch请求码判断跳转到哪个Activity
switch (requestCode) {
case 100://显示跳转到SecondActivity活动中
//知道跳转到哪个Activity之后根据响应码判断返回的是什么参数
switch (resultCode) {
case 10:
// 10对应到SecondActivity活动中back1()方法中的响应码
String data1 = data.getStringExtra("data1");
Toast.makeText(MainActivity.this, data1, Toast.LENGTH_SHORT)
.show();
break;
case 20:
// 20对应到SecondActivity活动中back2()方法中的响应码
String data2 = data.getStringExtra("data2");
Toast.makeText(MainActivity.this, data2, Toast.LENGTH_SHORT)
.show();
break;
}
break;
case 200://显示跳转到ThirdActivity活动中
switch (resultCode) {
case 30:
// 30对应到ThirdActivity活动中back3()方法中的响应码
String data3 = data.getStringExtra("data3");
Toast.makeText(MainActivity.this, data3, Toast.LENGTH_SHORT)
.show();
break;
}
break;
case 300://隐式跳转到FourthActivity活动中
switch (resultCode) {
case 40:
// 40对应到FourthActivity活动中back4()方法中的响应码
String data4 = data.getStringExtra("data4");
Toast.makeText(MainActivity.this, data4, Toast.LENGTH_SHORT)
.show();
break;
}
break;
default:
break;
}
}
第二个活动(SecondActivity)
activity_second.xml
<!-- 返回上一个活动MainActivity,第1种情况 -->
<Button
android:id="@+id/btnBack1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tvContent2"
android:layout_below="@+id/tvContent2"
android:layout_marginTop="27dp"
android:text="第一种情况"
android:onClick="back1"/>
<!-- 返回上一个活动MainActivity,第2种情况 -->
<Button
android:id="@+id/btnBack2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/btnBack1"
android:layout_below="@+id/btnBack1"
android:text="第二种情况"
android:onClick="back2"/>
SecondActivity.java文件
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//获取到文本框
tv = (TextView) findViewById(R.id.tvContent2);
//获取到从MainActivity活动传过来的值
String name = getIntent().getStringExtra("name");
//显示
tv.setText(name);
}
/**
* 第一种情况
* @param v
*/
public void back1(View v) {
Intent intent=new Intent();
intent.putExtra("data1", "我是来自活动2的情况1");
//第一个参数是响应码,第二个参数是要传的参数
setResult(10, intent);
//销毁当前活动
finish();
}
/**
* 第二种情况
* @param v
*/
public void back2(View v) {
Intent intent=new Intent();
intent.putExtra("data2", "我是来自活动2的情况2");
//第一个参数是响应码,第二个参数是要传的参数
setResult(20, intent);
//销毁当前活动
finish();
}
第三个活动(ThirdActivity)
activity_third.xml文件
<!-- 返回上一个活动MainActivity -->
<Button
android:id="@+id/btnBack3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="38dp"
android:text="返回活动1"
android:onClick="back3"/>
ThirdActivity.java文件
/**
* 第三种情况
* @param v
*/
public void back3(View v) {
Intent intent=new Intent();
intent.putExtra("data3", "我来自活动3");
//第一个参数是响应码,第二个参数是要传的参数
setResult(30, intent);
//销毁当前活动
finish();
}
第四个活动(FourthActivity,实现隐式Intent跳转)
AndroidManifest.xml配置文件
<activity
android:name="com.example.activitydemo.FourthActivity"
android:label="@string/title_activity_fourth" >
<!-- 意图过滤器 -->
<intent-filter>
<action android:name="com.example.activitytest" />
<!-- 将名字为com.example.activitytest的动作注册到系统中,只能被调用 -->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
activity_fourth.xml文件
<Button
android:id="@+id/btnBack4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="56dp"
android:text="返回活动1"
android:onClick="back4"/>
FourthActivity.java文件
/**
* 第四种情况
* @param v
*/
public void back4(View v) {
Intent intent=new Intent();
intent.putExtra("data4", "我来自活动4");
//第一个参数是响应码,第二个参数是要传的参数
setResult(40, intent);
//销毁当前活动
finish();
}