java Android在registerForActivityResult中使用对象
在我的AppCompatActivity
中,我声明了一个ActivityResultLauncher
。我使用registerForActivityResult()
来创建它,并为ActivityResultCallback
传递了一个LambdaExpression
然而,我需要一个对这个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不希望你在不同的活动之间共享对象。但是在这里,引用应该只保存在我的MainActivity.class
中
感谢您的帮助
# 1 楼答案
是的,差不多是的。看看documentation中的片段:
看起来
ActivityResultCallback
应该引用声明的实例变量,所以那就好了。对该对象的引用将是
private
,显然,它只存在于MainActivity
中