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想要我们做的吗?

我知道Android不希望你在不同的活动之间共享对象。但在这里,引用应该只保存在我的MainActivity.class中。

感谢您的帮助!

我可以把对象保存在一个私有字段中,但这是Android想要我们做的吗?

是的,几乎是的。查看文档中的片段:

registerForActivityResult()可以在创建片段或活动之前安全调用,从而允许在为返回的ActivityResultLauncher实例声明成员变量时直接使用它。

所以ActivityResultCallback似乎应该引用声明的实例变量,所以您确实是

可以将对象保存在专用字段中

这样就可以了。对该对象的引用将是private,而且它显然只存在于YourMainActivity中。

相关内容

  • 没有找到相关文章

最新更新