我有3个活动。
第一个活动是地图(使用谷歌地图API(。在这个活动中,我还有一个按钮,它将指向第二个活动。
在第二个活动中,它只是用于获取附加信息,但有一个按钮。单击此按钮后,它将指向第三个活动。
在第三个活动中,只有一个按钮会为第一个活动(映射(带来结果。
这就是我如何分配我的第一个活动的按钮:
startActivity(new Intent(FirstActivity.this, SecondActivity.class));
我还在第一个活动中使用了ActivityResultLauncher,比如:
ActivityResultLauncher<Intent> intentLaunch = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if(result.getResultCode() == Activity.RESULT_OK){
String data = result.getData().getStringExtra("SIMPAN");
Log.d(TAG, "berhasil");
}
}
);
在我的第三个活动按钮中,我这样分配它:
third_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.putExtra("SIMPAN", "Simpan");
setResult(Activity.RESULT_OK, intent);
finish();
startActivity(new Intent(ThirdActivity.this, FirstActivity.class)); // When the button is clicked, it will get back to first activity and bringing the result
}
});
但事实证明,第一次活动并没有得到结果。我想我在使用ActivityResultLauncher:之后错过了这个特定的代码
Intent intent = new Intent(FirstActivity.this, ThirdActivity.class);
intentLaunch.launch(intent);
但是,它使应用程序从第三个活动开始,而不是从第一个活动开始。它确实收到了结果(日志显示(,但只有一次。我该如何解决此问题?
(抱歉我英语不好(
这太过分了。简单地说:
Intent intent = getIntent();
String simpan = intent.getStringExtra("SIMPAN");
在您的onCreate class
中
registerForActivityResult
用于从应用程序外部获取结果,例如从相机获取图片。