android在registerforactivityresult中使用对象

q43xntqr  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(539)

在我的 AppCompatActivity ,我宣布 ActivityResultLauncher . 我曾经 registerForActivityResult() 创建它并传递 LambdaExpression 对于 ActivityResultCallback .
然而,我需要一个对象的引用 ActivityResultCallback ,我打电话的时候有 launch() .
示例代码:

private final ActivityResultLauncher<Intent> launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
    object.doSomething();
});

method() {
    Object object = new Object();
    launcher.launch(new Intent(MainActivity.this, OtherActivity.class));
}

我可以把对象保存在一个文件夹中 private 字段,但这是android想要我们做的吗?
我知道android不希望您在不同的活动之间共享对象。但是在这里,参考资料应该只保存在我的 MainActivity.class .
感谢您的帮助!

wixjitnu

wixjitnu1#

我可以将对象保存在一个私有字段中,但这是安卓想要我们做的吗?
是的,差不多是的。查看文档中的片段: registerForActivityResult() 在创建片段或活动之前可以安全地调用,允许在为返回的片段声明成员变量时直接使用它 ActivityResultLauncher 示例。
所以看起来像是 ActivityResultCallback 应该引用声明的示例变量,因此
只能将对象保存在私有字段中
那就好了。对该对象的引用将是 private 很明显,它只存在于你的生活中 MainActivity .

相关问题