代码之家  ›  专栏  ›  技术社区  ›  Hong

尝试调用虚拟方法“void android.view”。对空对象引用执行View.dispatchCancelPendingInputEvents()

  •  0
  • Hong  · 技术社区  · 3 年前

    a similar question 。我的代码不同,但原因可能相同。我认为我的代码更简单,可能有助于找到罪魁祸首。 首先,只会发生的崩溃 偶尔地 (即,代码在大多数情况下都能正常工作):

    Class: java.lang.NullPointerException
     Stack trace: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.dispatchCancelPendingInputEvents()' on a null object reference
            at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
            at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
            at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
            at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
            at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
            at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
            at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
            at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
            at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
            at android.view.View.cancelPendingInputEvents(View.java:18456)
            at android.app.Activity.cancelInputsAndStartExitTransition(Activity.java:4657)
            at android.app.Activity.startActivityForResult(Activity.java:4636)
            at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:753)
            at androidx.core.app.ActivityCompat$Api16Impl.b(ActivityCompat.java:0)
            at androidx.core.app.ActivityCompat.k(ActivityCompat.java:0)
            at androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:258)
            at androidx.activity.result.ActivityResultRegistry$2.launch(ActivityResultRegistry.java:175)
            at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:47)
    

    导致崩溃的代码 偶尔地 :

    Intent intent = new Intent(this, FooActivity.class);
    intent.putExtra("mode", "manage");  
    intent.putExtra("pro", true);
    launcherFooActivity.launch(intent);
    

    以下是launcherFooActivity:

       final ActivityResultLauncher<Intent> launcherFooActivity = registerForActivityResult(
                new ActivityResultContracts.StartActivityForResult(),
                result -> {
                    try {
                       ...
                    } catch (Exception ex) {
                       ...
                    }
                });
    

    有人能解释一下这次事故的可能原因吗?

    0 回复  |  直到 3 年前