文章目录
- 一、报错信息
- 二、解决方案
一、报错信息
使用环境 :
- Kotlin 编写的 Activity
- 使用了 kotlin-android-extensions 扩展插件 , 在 build.gradle 中配置的
apply plugin: 'kotlin-android-extensions'
; - 在 Activity 界面中使用了
var texts: Array<TextView> = arrayOf(text0, text1)
代码 ;
2021-03-26 11:30:49.653 8620-8620/cn.hsl.example E/AndroidRuntime: FATAL EXCEPTION: main
Process: cn.hsl.example, PID: 8620
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cn.hsl.example/cn.hsl.example.xxxActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2881)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:120)
at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:155)
at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:31)
at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:55)
at android.support.v7.app.AppCompatDelegateImplV23.<init>(AppCompatDelegateImplV23.java:33)
at android.support.v7.app.AppCompatDelegateImplN.<init>(AppCompatDelegateImplN.java:33)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:201)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519)
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190)
at cn.hsl.example.xxxActivity._$_findCachedViewById(Unknown Source:25)
at cn.hsl.example.xxxActivity.<init>(ReactionDrumActivity.kt:47)
at java.lang.Class.newInstance(Native Method)
at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69)
at android.app.Instrumentation.newActivity(Instrumentation.java:1215)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2869)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2021-03-26 11:30:49.654 8620-8620/cn.hsl.example E/DEBUG: begin to generate java report
2021-03-26 11:30:49.659 8620-8620/cn.hsl.example E/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2021-03-26 11:30:49.661 8620-8620/cn.hsl.example E/DEBUG: Basic Information: 'pid: 8620/tid: 8620/time: 20210326113049'
2021-03-26 11:30:49.662 8620-8620/cn.hsl.example E/DEBUG: Cpu Information: 'abi: arm64-v8a,armeabi-v7a,armeabi/processor: AArch64 Processor rev 1 (aarch64)/hardware: Qualcomm Technologies, Inc MSM8998'
2021-03-26 11:30:49.662 8620-8620/cn.hsl.example E/DEBUG: Mobile Information: 'model: Pixel 2/version: 9/sdk: 28'
2021-03-26 11:30:49.662 8620-8620/cn.hsl.example E/DEBUG: Build fingerprint: 'google/walleye/walleye:9/PQ3A.190801.002/5670241:user/release-keys'
2021-03-26 11:30:49.664 8620-8620/cn.hsl.example E/DEBUG: Runtime Information: 'start: 20210326113042/maxheap: 201326592/primaryabi: arm64-v8a/ground: bg'
2021-03-26 11:30:49.665 8620-8620/cn.hsl.example E/DEBUG: Application Information: 'version: 0.1/subversion: release/buildseq: d79b3587/versioncode: 1'
2021-03-26 11:30:49.665 8620-8620/cn.hsl.example E/DEBUG: CrashSDK Information: 'version: 3.2.0.4/nativeseq: 0/javaseq: 200403192109/arch: /target: umeng'
2021-03-26 11:30:49.666 8620-8620/cn.hsl.example E/DEBUG: Report Name: 5f3cf3dfd3093221547aec89_0.1_d79b3587_Pixel-2_9_161672944965535295_20210326113049_bg_ucebujava.log
2021-03-26 11:30:49.666 8620-8620/cn.hsl.example E/DEBUG: UUID: 1affcaf9-c824-4c86-acfe-80132e09c1fb
2021-03-26 11:30:49.667 8620-8620/cn.hsl.example E/DEBUG: Log Type: ucebujava
2021-03-26 11:30:49.667 8620-8620/cn.hsl.example E/DEBUG: Activity: (none)
2021-03-26 11:30:49.667 8620-8620/cn.hsl.example E/DEBUG: --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
2021-03-26 11:30:49.667 8620-8620/cn.hsl.example E/DEBUG: um_app_key: 5f3cf3dfd3093221547aec89
2021-03-26 11:30:49.667 8620-8620/cn.hsl.example E/DEBUG: um_app_channel: Umeng
2021-03-26 11:30:49.667 8620-8620/cn.hsl.example E/DEBUG: um_os: android
2021-03-26 11:30:49.668 8620-8620/cn.hsl.example E/DEBUG: um_crash_sdk_version: v0.0.5
2021-03-26 11:30:49.668 8620-8620/cn.hsl.example E/DEBUG: um_umid_header: ai3406fbd3ecf72697d53b52606d7202ee
2021-03-26 11:30:49.668 8620-8620/cn.hsl.example E/DEBUG: --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
2021-03-26 11:30:49.668 8620-8620/cn.hsl.example E/DEBUG: Process Name: 'cn.hsl.example'
2021-03-26 11:30:49.668 8620-8620/cn.hsl.example E/DEBUG: Thread Name: 'main'
2021-03-26 11:30:49.668 8620-8620/cn.hsl.example E/DEBUG: Back traces starts.
2021-03-26 11:30:49.668 8620-8620/cn.hsl.example W/cn.hsl.example: Accessing hidden field Ljava/lang/Throwable;->detailMessage:Ljava/lang/String; (light greylist, reflection)
2021-03-26 11:30:49.669 8620-8620/cn.hsl.example E/DEBUG: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cn.hsl.example/cn.hsl.example.xxxActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
2021-03-26 11:30:49.670 8620-8620/cn.hsl.example E/DEBUG: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2881)
2021-03-26 11:30:49.670 8620-8620/cn.hsl.example E/DEBUG: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
2021-03-26 11:30:49.670 8620-8620/cn.hsl.example E/DEBUG: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
2021-03-26 11:30:49.670 8620-8620/cn.hsl.example E/DEBUG: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
2021-03-26 11:30:49.670 8620-8620/cn.hsl.example E/DEBUG: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
2021-03-26 11:30:49.671 8620-8620/cn.hsl.example E/DEBUG: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
2021-03-26 11:30:49.671 8620-8620/cn.hsl.example E/DEBUG: at android.os.Handler.dispatchMessage(Handler.java:106)
2021-03-26 11:30:49.671 8620-8620/cn.hsl.example E/DEBUG: at android.os.Looper.loop(Looper.java:193)
2021-03-26 11:30:49.671 8620-8620/cn.hsl.example E/DEBUG: at android.app.ActivityThread.main(ActivityThread.java:6718)
2021-03-26 11:30:49.671 8620-8620/cn.hsl.example E/DEBUG: at java.lang.reflect.Method.invoke(Native Method)
2021-03-26 11:30:49.672 8620-8620/cn.hsl.example E/DEBUG: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
2021-03-26 11:30:49.672 8620-8620/cn.hsl.example E/DEBUG: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2021-03-26 11:30:49.672 8620-8620/cn.hsl.example E/DEBUG: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
2021-03-26 11:30:49.672 8620-8620/cn.hsl.example E/DEBUG: at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:120)
2021-03-26 11:30:49.673 8620-8620/cn.hsl.example E/DEBUG: at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:155)
2021-03-26 11:30:49.673 8620-8620/cn.hsl.example E/DEBUG: at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:31)
2021-03-26 11:30:49.673 8620-8620/cn.hsl.example E/DEBUG: at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:55)
2021-03-26 11:30:49.673 8620-8620/cn.hsl.example E/DEBUG: at android.support.v7.app.AppCompatDelegateImplV23.<init>(AppCompatDelegateImplV23.java:33)
2021-03-26 11:30:49.673 8620-8620/cn.hsl.example E/DEBUG: at android.support.v7.app.AppCompatDelegateImplN.<init>(AppCompatDelegateImplN.java:33)
2021-03-26 11:30:49.674 8620-8620/cn.hsl.example E/DEBUG: at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:201)
2021-03-26 11:30:49.674 8620-8620/cn.hsl.example E/DEBUG: at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185)
2021-03-26 11:30:49.674 8620-8620/cn.hsl.example E/DEBUG: at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519)
2021-03-26 11:30:49.674 8620-8620/cn.hsl.example E/DEBUG: at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190)
2021-03-26 11:30:49.674 8620-8620/cn.hsl.example E/DEBUG: at cn.hsl.example.xxxActivity._$_findCachedViewById(Unknown Source:25)
2021-03-26 11:30:49.675 8620-8620/cn.hsl.example E/DEBUG: at cn.hsl.example.xxxActivity.<init>(ReactionDrumActivity.kt:47)
2021-03-26 11:30:49.675 8620-8620/cn.hsl.example E/DEBUG: at java.lang.Class.newInstance(Native Method)
2021-03-26 11:30:49.675 8620-8620/cn.hsl.example E/DEBUG: at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69)
2021-03-26 11:30:49.675 8620-8620/cn.hsl.example E/DEBUG: at android.app.Instrumentation.newActivity(Instrumentation.java:1215)
2021-03-26 11:30:49.675 8620-8620/cn.hsl.example E/DEBUG: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2869)
2021-03-26 11:30:49.676 8620-8620/cn.hsl.example E/DEBUG: ... 11 more
2021-03-26 11:30:49.676 8620-8620/cn.hsl.example E/DEBUG: Back traces ends.
2021-03-26 11:30:49.676 8620-8620/cn.hsl.example E/DEBUG: --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
2021-03-26 11:30:49.676 8620-8620/cn.hsl.example E/DEBUG: meminfo:
2021-03-26 11:30:49.676 8620-8620/cn.hsl.example E/DEBUG: MemTotal: 3744240 kB
MemFree: 49476 kB
MemAvailable: 1212412 kB
Buffers: 11908 kB
Cached: 1305404 kB
SwapCached: 8600 kB
Active: 1594884 kB
Inactive: 960020 kB
Active(anon): 1010644 kB
Inactive(anon): 375444 kB
Active(file): 584240 kB
Inactive(file): 584576 kB
Unevictable: 146832 kB
Mlocked: 146832 kB
二、解决方案
上述错误就是在 setContentView(R.layout.xxx)
之前调用 findViewById 导致的错误 ;
在 var texts: Array<TextView> = arrayOf(text0, text1)
代码中的 text0 是布局中的 R.id.text0 组件 , 该位置实际上是调用了 (TextView)findViewById(R.id.text0)
方法 , 但是调用该方法的前提是已经设置了布局 ;
修改方案 :
① 成员变量中不进行赋值 , 使用延迟加载 , lateinit var texts: Array<TextView>
;
② 在 onCreate 方法中 setContentView
方法之后再进行赋值 ;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.xxx)
texts = arrayOf(text0, text1)
}