'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference

解决Android findViewById错误
本文解析了一个常见的Android开发问题,即在setContentView之前调用findViewById会引发错误。通过对比正确的代码顺序,强调了setContentView必须先于findViewById调用的重要性。

做app时刚开头就报这个错误了,仔细一看,原来

findViewById(R.id.toolbar)不能在
setContentView(R.layout.activity_main)的前面。

比如:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    var toolbar:Toolbar=findViewById(R.id.toolbar)
    setSupportActionBar(toolbar)
}
如果:
var toolbar:Toolbar=findViewById(R.id.toolbar)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    setSupportActionBar(toolbar)
}这样子的顺序就会报这个错误。
报错No package ID ff found for ID 0xff60fd60. 2025-08-25 11:37:38.765 10184-10184 InputEventReceiver com.example.tapobulb E Exception dispatching input event. 2025-08-25 11:37:38.765 10184-10184 MessageQueue-JNI com.example.tapobulb E Exception in MessageQueue callback: handleReceiveCallback 2025-08-25 11:37:38.767 10184-10184 MessageQueue-JNI com.example.tapobulb E android.content.res.Resources$NotFoundException: Resource ID #0xff60fd60 at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:278) at android.content.res.MiuiResourcesImpl.getValue(MiuiResourcesImpl.java:96) at android.content.res.Resources.getValue(Resources.java:1490) at androidx.core.content.res.ResourcesCompat.isColorInt(ResourcesCompat.java:309) at androidx.core.content.res.ResourcesCompat.inflateColorStateList(ResourcesCompat.java:256) at androidx.core.content.res.ResourcesCompat.getColorStateList(ResourcesCompat.java:236) at androidx.core.content.ContextCompat.getColorStateList(ContextCompat.java:558) at com.example.tapobulb.MainActivity.setupViewModelObservers$lambda$4$lambda$3(MainActivity.kt:51) at com.example.tapobulb.MainActivity.$r8$lambda$Aw6WyfnBVLUECeVL56ClJi3KHKY(Unknown Source:0) at com.example.tapobulb.MainActivity$$ExternalSyntheticLambda1.onChanged(D8$$SyntheticClass:0) at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133) at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:146) at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:483) at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:440) at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:314) at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.kt:192) at androidx.lifecycle.LiveData.observe(LiveData.java:205) at com.example.tapobulb.MainActivity.setupViewModelObservers$lambda$4(MainActivity.kt:48) at com.example.tapobulb.MainActivity.$r8$lambda$LSOh1v2gQLh31kpgis6DESsqoII(Unknown Source:0) at com.example.tapobulb.MainActivity$$ExternalSyntheticLambda9.invoke(D8$$SyntheticClass:0) at com.example.tapobulb.MainActivity$sam$androidx_lifecycle_Observer$0.onChanged(Unknown Source:2) at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133) at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:151) at androidx.lifecycle.LiveData.setValue(LiveData.java:309) at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50) at com.example.tapobulb.MainViewModel.selectColor(MainViewModel.kt:45) at com.example.tapobulb.PresetFragment.onCreateView$lambda$3(PresetFragment.kt:74) at com.example.tapobulb.PresetFragment.$r8$lambda$Ds8HsIx_9wXV2oTz6rp1_WXAYno(Unknown Source:0) at com.example.tapobulb.PresetFragment$$ExternalSyntheticLambda3.invoke(D8$$SyntheticClass:0) at com.example.tapobulb.view.ColorPickerView.onTouchEvent(ColorPickerView.kt:103) at android.view.View.dispatchTouchEvent(View.java:15164) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) 2025-08-25 11:37:38.767 10184-10184 MessageQueue-JNI com.example.tapobulb E at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:578) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1899) at android.app.Dialog.dispatchTouchEvent(Dialog.java:920) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:70) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:536) at android.view.View.dispatchPointerEvent(View.java:15444) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7238) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6991) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6406) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6463) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6429) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6594) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6437) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6651) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6410) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6463) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6429) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6437) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6410) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9685) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9636) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9591) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9833) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:296) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:341) at android.os.Looper.loopOnce(Looper.java:169) at android.os.Looper.loop(Looper.java:300) at android.app.ActivityThread.main(ActivityThread.java:8321) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:581) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1028) 2025-08-25 11:37:38.767 10184-10184 AndroidRuntime com.example.tapobulb D Shutting down VM 2025-08-25 11:37:38.768 10184-10184 AndroidRuntime com.example.tapobulb E FATAL EXCEPTION: main Process: com.example.tapobulb, PID: 10184 android.content.res.Resources$NotFoundException: Resource ID #0xff60fd60 at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:278) at android.content.res.MiuiResourcesImpl.getValue(MiuiResourcesImpl.java:96) at android.content.res.Resources.getValue(Resources.java:1490) at androidx.core.content.res.ResourcesCompat.isColorInt(ResourcesCompat.java:309) at androidx.core.content.res.ResourcesCompat.inflateColorStateList(ResourcesCompat.java:256) at androidx.core.content.res.ResourcesCompat.getColorStateList(ResourcesCompat.java:236) at androidx.core.content.ContextCompat.getColorStateList(ContextCompat.java:558) at com.example.tapobulb.MainActivity.setupViewModelObservers$lambda$4$lambda$3(MainActivity.kt:51) at com.example.tapobulb.MainActivity.$r8$lambda$Aw6WyfnBVLUECeVL56ClJi3KHKY(Unknown Source:0) at com.example.tapobulb.MainActivity$$ExternalSyntheticLambda1.onChanged(D8$$SyntheticClass:0) at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133) at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:146) at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:483) at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:440) at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:314) at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.kt:192) at androidx.lifecycle.LiveData.observe(LiveData.java:205) at com.example.tapobulb.MainActivity.setupViewModelObservers$lambda$4(MainActivity.kt:48) at com.example.tapobulb.MainActivity.$r8$lambda$LSOh1v2gQLh31kpgis6DESsqoII(Unknown Source:0) at com.example.tapobulb.MainActivity$$ExternalSyntheticLambda9.invoke(D8$$SyntheticClass:0) at com.example.tapobulb.MainActivity$sam$androidx_lifecycle_Observer$0.onChanged(Unknown Source:2) at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133) at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:151) at androidx.lifecycle.LiveData.setValue(LiveData.java:309) at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50) at com.example.tapobulb.MainViewModel.selectColor(MainViewModel.kt:45) at com.example.tapobulb.PresetFragment.onCreateView$lambda$3(PresetFragment.kt:74) at com.example.tapobulb.PresetFragment.$r8$lambda$Ds8HsIx_9wXV2oTz6rp1_WXAYno(Unknown Source:0) at com.example.tapobulb.PresetFragment$$ExternalSyntheticLambda3.invoke(D8$$SyntheticClass:0) at com.example.tapobulb.view.ColorPickerView.onTouchEvent(ColorPickerView.kt:103) at android.view.View.dispatchTouchEvent(View.java:15164) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) 2025-08-25 11:37:38.768 10184-10184 AndroidRuntime com.example.tapobulb E at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3206) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2843) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:578) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1899) at android.app.Dialog.dispatchTouchEvent(Dialog.java:920) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:70) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:536) at android.view.View.dispatchPointerEvent(View.java:15444) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7238) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6991) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6406) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6463) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6429) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6594) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6437) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6651) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6410) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6463) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6429) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6437) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6410) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9685) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9636) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9591) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9833) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:296) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:341) at android.os.Looper.loopOnce(Looper.java:169) at android.os.Looper.loop(Looper.java:300) at android.app.ActivityThread.main(ActivityThread.java:8321) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:581) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1028)
最新发布
08-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值