1 需求
- 调用栈
- MainActivity.java 的 startActivityForResult
- SecondActivity.java 的 putExtra
- SecondActivity.java 的 setResult
- SecondActivity.java 的 finish
- MainActivity.java 的 onActivityResult
2 接口
- Public methods
- public void startActivityForResult (Intent intent, int requestCode)
- public void startActivityForResult (Intent intent, int requestCode, Bundle options)
- public final void setResult (int resultCode, Intent data)
- public final void setResult (int resultCode)
- Protected methods
- protected void onActivityResult (int requestCode, int resultCode, Intent data)
- public void onBackPressed ()
3 示例代码
MainActivity.java
package com.example.learn_activity_return_data;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_next = (Button) findViewById(R.id.btn_next);
btn_next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String returnData = data.getStringExtra("data_return");
TextView tv_show = findViewById(R.id.tv_show);
tv_show.setText(returnData);
}
break;
default:
break;
}
}
}
SecondActivity.java
package com.example.learn_activity_return_data;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Button btn_back = (Button) findViewById(R.id.btn_back);
btn_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("data_return", "123456");
setResult(RESULT_OK, intent);
finish();
}
});
}
}