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