向上一个Activity返回数据
处理流程:
-
上一个页面打包好请求数据,调用startActivityForResult方法执行跳转动作(方法已过时)
(采用registerForActivityResult)
-
下一个页面接收并解析请求数据,进行相应处理
-
下一个页面在返回上一个页面时,打包应答数据并调用setResult方法返回数据包裹
-
上一个页面重写方法onActivityResult,解析获得下一个页面的返回数据
Request.java
public class Request extends AppCompatActivity {
private ActivityResultLauncher<Intent> intentActivityResultLauncher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_request);
TextView textView = findViewById(R.id.tv_my);
intentActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result != null) {
Intent data = result.getData();
Bundle extras = data.getBundleExtra("bundle");//获取传递方法1
String response = extras.getString("response");
textView.setText(response);
}
}
});
}
public void request(View view) {
Intent intent = new Intent(this,Response.class);
Bundle bundle = new Bundle();
bundle.putString("request","睡了吗");
intent.putExtras(bundle);//传递方法2
intentActivityResultLauncher.launch(intent);
}
}
Response.java
public class Response extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_response);
Bundle extras = getIntent().getExtras();//获取传递方法2
String request = extras.getString("request");
TextView textView = findViewById(R.id.tv_my);
textView.setText(request);
}
public void response(View view) {
Intent intent = new Intent();
Bundle bundle= new Bundle();
bundle.putString("response","睡了");
intent.putExtra("bundle",bundle);//获取传递方法1
setResult(Activity.RESULT_OK,intent);
finish();
}
}