有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    I could just save the object in a private field, but is this what Android intents us to do?

    是的,差不多是的。看看documentation中的片段:

    registerForActivityResult() is safe to call before your fragment or activity is created, allowing it to be used directly when declaring member variables for the returned ActivityResultLauncher instances.

    看起来ActivityResultCallback应该引用声明的实例变量,所以

    could just save the object in a private field

    那就好了。对该对象的引用将是private,显然,它只存在于MainActivity