Now we do a test, FirstAvtivity pass information to SecondActivity, after SecondActivity be destroyed, SecondActivity return information to FirstActivity.
- MainActivity.java (FirstActivity)
package com.example.lisiwei.twoactivitytransfer;
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.Toast;
public class MainActivity extends AppCompatActivity {
Button button = null;
private final int REQUESTCODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.Mainbutton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
// Person是一信息类,set 属性,这里做序列化通过Intent传递给secondActivity
Person person = new Person();
Bundle bundle = new Bundle();
person.setAge(15);
person.setName("lisiwei");
// bundle序列化
bundle.putSerializable("gaofushuai",person);
// put 到 Intent中
intent.putExtras(bundle);
// 用startActivityForResult而不用startActivity, 前者在Activity销毁之后可以根据REQUESTCODE,来判断是不是我们需 要处理的Activity返回的
startActivityForResult(intent,REQUESTCODE);
}
});
}
// 重新pnActivityResult, 第一个参数就是 REQUESTCODE,用来判断是不是FirstActivity启动的, 第二个参数就是销毁Activity传回来做判断是否调用成功,data secondActivity传回来的
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUESTCODE:{
if (RESULT_OK == resultCode){
String requenstStr = data.getStringExtra("return_text");
Toast.makeText(this, requenstStr, Toast.LENGTH_LONG).show();
}
}
}
}
}
2 Main2Activity.java (SecondActivity)
package com.example.lisiwei.twoactivitytransfer;
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.Toast;
public class Main2Activity extends AppCompatActivity {
Button button = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
// get bundle
Bundle bundle = getIntent().getExtras();
// 从bundle反序列化
Person person = (Person) bundle.getSerializable("gaofushuai");
String str = "age : " + person.getAge() + " name :" + person.getName();
Toast.makeText(this,str,Toast.LENGTH_LONG).show();
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = "i had got it";
Intent intent = new Intent();
intent.putExtra("return_text",str);
// 返回给启动它的Activity的消息
setResult(RESULT_OK, intent);
finish();
}
});
}
}
Class 3 properties, Person.java
package com.example.lisiwei.twoactivitytransfer;
import java.io.Serializable;
public class Person implements Serializable{
private int age;
private String name;
Person(){
}
public void setAge(int age){
this.age = age;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public String getName(){
return name;
}
}
Complete code: https://download.csdn.net/download/lisiwei1994/10801178