传值的地方使用方法不变,只改变启动的方式。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//返回值接收
ActivityResultLauncher resultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == 2151) {
String value = result.getData().getStringExtra("result");
Toast.makeText(MainActivity.this, value, Toast.LENGTH_SHORT).show();
}
}
});
(findViewById(R.id.t_hello)).setOnClickListener(ivew -> {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
//代替startActivityForResult
resultLauncher.launch(intent);
});
}
}
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
(findViewById(R.id.t_hello)).setOnClickListener(ivew -> {
Intent intent = new Intent();
intent.putExtra("result", "Success!");
setResult(2151, intent);
finish();
});
}
}