有 Java 编程相关的问题?

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

java ActivityResultLauncher为空

由于startActivityForResult()现在已被弃用,因此我尝试通过以下方式实现我的意图:

public class Stt extends MainActivity {
    private TextView _dialogText;

    ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result.getResultCode() == Activity.RESULT_OK) {
                        Intent data = result.getData();
                        // do something with data
                    }
                }
            });


    public Stt(View targetView, Context context) {
        _dialogText = targetView.findViewById(R.id.dialog_text);
        ImageView dialogSst = targetView.findViewById(R.id.dialog_sst);

        dialogSst.setOnClickListener(_view -> {
            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
            intent.putExtra(RecognizerIntent.ACTION_RECOGNIZE_SPEECH, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
            intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say something ...");
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());

            activityResultLauncher.launch(intent);
        });

    }
}

所以activityResultLauncher.launch(intent);肯定有什么问题,因为我得到了这个错误:

java.lang.NullPointerException: Attempt to invoke virtual method '安卓.app.ActivityThread$ApplicationThread 安卓.app.ActivityThread.getApplicationThread()' on a null object reference

我的代码怎么了


共 (0) 个答案