为什么我的 resultLauncher.launch(intent) 返回 null 而我发现它不是?

Why is my resultLauncher.launch(intent) returning null when I see that it is not?

问题:

在调试期间,当 'if' 参数表示值不等于(即 !=)为零时,Trace.traceEnd(traceTag) 似乎正在对“0”(零)值执行。请参阅下面附带的屏幕截图。结果,当 intentresultLauncher 都不为空时,它返回 'nullExceptionPointer'。

我在做什么:

我正在创建一个 table,其中包含一个 TextView 的行,当执行 TextView 的 OnClick 时,它会启动一个 FileChooser -- 预期的结果是捕获文件路径并填充TableRow 中的 TextView。

初始化 FileChooser class 并传递 Intent 后,我​​可以单步执行构造函数中的代码,看到 resultLauncher 已完全初始化并且传递的 Intent 不为空。下面是代码 TableRow / TextView 单击操作和调用文件选择器 class.

空异常指针出现在 resultLauncher.launch(intent) 上。在单步执行时,它出现在 Looper.java class 中,if(traceTag !=0) 参数在它为 0 时正在执行(参见图片附件)。

TableRow TextView 的代码 OnClick 设置:

            row.addView(addRowTextViewToTable(context, fileName, false));
            row.setClickable(true);
            row.setOnClickListener(v ->{
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("*/*");
                FileChooser fileChooser = new FileChooser(intent);
                TextView child = (TextView) row.getChildAt(1);
                child.setText(fileChooser.getFilePath());
            });

文件选择器Class:

public class FileChooser 扩展 AppCompatActivity {

public FileChooser(Intent intent){
    resultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
        if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null){
            Uri uri = result.getData().getData();
            filePath = uri.getPath();
        }
    });
    resultLauncher.launch(intent);
}

private String fileName;
private String filePath;
private final ActivityResultLauncher<Intent> resultLauncher;

public String getFileName() {
    return fileName;
}

public String getFilePath() {
    return filePath;
}

public ActivityResultLauncher<Intent> getResultLauncher() {
    return resultLauncher;
}

}

在我看来 Looper.java class 没有正常工作:

这最终成为需要提交给问题跟踪器的问题。它需要一个解决方法。 https://issuetracker.google.com/issues/19078322