功能:从activityA跳转到activityB,finish()掉activityB后回到activityA的同时携带数据传回activityA
activityA的xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/tv_a"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="jump"
android:textAllCaps="false"/>
<TextView
android:id="@+id/tv_ab"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
activityA代码
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class ActivityA extends AppCompatActivity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
Button tvA=findViewById(R.id.tv_a);
tv=findViewById(R.id.tv_ab);
tvA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ActivityA.this,ActivityB.class);
//带返回值的跳转方法,参数1:intent意图
// 参数二:请求码,是一个requestCode值,用于标识每个按钮所启动的activity
startActivityForResult(intent,222);
}
});
}
/**
* 所有的Activity对象的返回值都是由这个方法来接收
* @param requestCode 表示的是启动一个Activity时传过去的requestCode值
* @param resultCode 表示的是启动后的Activity回传值时的resultCode值
* @param data 表示的是启动后的Activity回传过来的Intent对象
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 判断请求码和返回码是不是正确的,这两个码都是我们自己设置的
if (requestCode==222&&resultCode==111){
String name=data.getStringExtra("name");
tv.setText(name);
}
}
}
activityB的xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/tv_b"
android:text="Carry data to jump back"
android:textAllCaps="false"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
activityB代码
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ActivityB extends AppCompatActivity {
protected static String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
Button tvB = findViewById(R.id.tv_b);
tvB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.putExtra("name", "张三");
/**
*@param resultCode 返回码,跳转到activityA根据这个resultCode区分是哪个
*activity返回的数据
*@param intent 数据源
*/
setResult(111, intent);
finish();
}
});
}
}