将参数传递给 ActivityResultContracts.StartActivityForResult 始终默认

passing parameter to ActivityResultContracts.StartActivityForResult always default

提问人:Chris972 提问时间:7/27/2022 更新时间:7/27/2022 访问量:579

问:

我正在尝试传递 ActivityResultContracts.StartActivityForResult() 的参数,但它始终为 null (getParcelableExtra) 或默认值 (getIntExtra)。我不明白我做错了什么。

    ActivityResultLauncher<Intent> activityResultLauncher;
protected void onCreate(Bundle savedInstanceState) {
    activityResultLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            result -> {
                if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null) {
                    Log.v(Consts.TAG, "result : " + result.getData().getIntExtra("code", -1));
                }
            });
    imgButtonGal.setOnClickListener(view -> {
        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        Integer code = 111;
        intent.putExtra("code", code);
        activityResultLauncher.launch(intent);
    });

我总是得到:

result : -1

(代码只是一个例子,请不要关注意图类型)

java android android-intent 参数传递

评论

2赞 CommonsWare 7/27/2022
您不能将附加内容附加到出站并在结果中将这些附加内容传回给您,除非您专门编写了响应 的活动来执行此操作。很可能您没有编写活动。IntentIntentIntentACTION_PICK
0赞 Chris972 7/27/2022
好的,谢谢@CommonsWare,那么,我该怎么做才能通过一个论点?
1赞 CommonsWare 7/27/2022
对不起,这不是一个选择。如果您想记住 的值,请在您的应用程序中的某个变量中保留它(理想情况下,保存到合适的已保存实例状态,以防 Android 在用户位于您正在启动的应用程序中时终止您的应用程序进程)。codeBundle

答: 暂无答案