java.lang.NullPointerException:尝试调用虚拟方法';boolean android.view.WindowInsets.isConsumed()';关于空对象引用
我正在使用UnityActivity与unity3d合作。我有一个主要的活动,从这里开始UnityActivityjava.lang.NullPointerException:尝试调用虚拟方法';boolean android.view.WindowInsets.isConsumed()';关于空对象引用,android,unity3d,nullpointerexception,Android,Unity3d,Nullpointerexception,我正在使用UnityActivity与unity3d合作。我有一个主要的活动,从这里开始UnityActivity Intent unity = new Intent(this, UnityActivity.class); startActivity(unity); UnityActivity和MainActivity都是 launchMode="singleTask" 在使用unity之后,我调用下面的代码 UnityActivity.this.finish(); 我得到
Intent unity = new Intent(this, UnityActivity.class);
startActivity(unity);
UnityActivity和MainActivity都是
launchMode="singleTask"
在使用unity之后,我调用下面的代码
UnityActivity.this.finish();
我得到了一个错误:
D/MainActivity(25562): onStart
D/MainActivity(25562): onResume
D/AndroidRuntime(25562): Shutting down VM
E/AndroidRuntime(25562): FATAL EXCEPTION: main
E/AndroidRuntime(25562): Process: ru.mdinc.mdinc, PID: 25562
E/AndroidRuntime(25562): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.WindowInsets.isConsumed()' on a null object reference
E/AndroidRuntime(25562): at android.view.ViewGroup.dispatchApplyWindowInsets(ViewGroup.java:7077)
E/AndroidRuntime(25562): at android.view.ViewRootImpl.dispatchApplyInsets(ViewRootImpl.java:1670)
E/AndroidRuntime(25562): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2083)
E/AndroidRuntime(25562): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1468)
E/AndroidRuntime(25562): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7208)
E/AndroidRuntime(25562): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1004)
E/AndroidRuntime(25562): at android.view.Choreographer.doCallbacks(Choreographer.java:816)
E/AndroidRuntime(25562): at android.view.Choreographer.doFrame(Choreographer.java:751)
E/AndroidRuntime(25562): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:990)
E/AndroidRuntime(25562): at android.os.Handler.handleCallback(Handler.java:873)
E/AndroidRuntime(25562): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(25562): at android.os.Looper.loop(Looper.java:193)
E/AndroidRuntime(25562): at android.app.ActivityThread.main(ActivityThread.java:6762)
E/AndroidRuntime(25562): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(25562): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/AndroidRuntime(25562): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
我没有重写WindowInsets的任何方法,所以不要放置“在使用变量之前忘记初始化变量”之类的链接
我预计UnityActivity将关闭,MainActivity将以以前的状态重新启动
在使用Vuforia添加功能之前,代码运行良好
编辑:发现错误发生我为自己修复了这个问题。我正在使用
mUnityPlayer.pause()
活动前onPause()
例如,我需要处理服务消息并关闭UnityActivity,因此我需要:
switch(message) {
...
case "stop-unity":
mUnityPlayerPause(); //Pause the unity before activities onPause()
isFinish = true; //field of UnityActivity class
UnityActivity.this.finish(); //Stop activity
break;
}
现在在onPause()
方法中需要检查的是isPause
操作:
@Override
void onPause() {
if (!isFinish) mUnityPlayer.pause(); //Pause unity only when it's system call
super.onPause();
}
我帮我修好了。我正在使用
mUnityPlayer.pause()
活动前onPause()
例如,我需要处理服务消息并关闭UnityActivity,因此我需要:
switch(message) {
...
case "stop-unity":
mUnityPlayerPause(); //Pause the unity before activities onPause()
isFinish = true; //field of UnityActivity class
UnityActivity.this.finish(); //Stop activity
break;
}
现在在onPause()
方法中需要检查的是isPause
操作:
@Override
void onPause() {
if (!isFinish) mUnityPlayer.pause(); //Pause unity only when it's system call
super.onPause();
}
我发现这次崩溃并不是将Unity活动嵌入Android,而是一个常用的Unity应用程序,带有
Application.Quit()调用代码>时,可能会发生此崩溃
经过一些尝试,我发现这可能是一个统一的错误。Unity的LTS版本(Unity2018.4 LTS)的构建一切正常,而Unity 2018.3.1f1(64位)版本的构建导致了此崩溃
尝试使用统一版本!希望能帮助谷歌的任何人。我发现这次崩溃不是将Unity活动嵌入Android,而是一个常用的Unity应用程序,带有Application.Quit()调用代码>时,可能会发生此崩溃
经过一些尝试,我发现这可能是一个统一的错误。Unity的LTS版本(Unity2018.4 LTS)的构建一切正常,而Unity 2018.3.1f1(64位)版本的构建导致了此崩溃
尝试使用统一版本!希望能帮助这里的谷歌用户