有时,我在打开应用程序时会遇到此崩溃:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.widget.ContentFrameLayout.setDecorPadding(int, int, int, int)' on a null object reference
at androidx.appcompat.app.AppCompatDelegateImpl.applyFixedSizeWindow(AppCompatDelegateImpl.java:1026)
at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:820)
at androidx.appcompat.app.AppCompatDelegateImpl.onPostCreate(AppCompatDelegateImpl.java:527)
at androidx.appcompat.app.AppCompatActivity.onPostCreate(AppCompatActivity.java:127)
at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1381)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3499)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7814)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
正如您所看到的,堆栈跟踪中没有引用我的代码中的某些内容,因此因此我无法找出问题所在。这次崩溃的原因可能是什么?.
就我而言,当我加载第一个屏幕时,我在生产中遇到了此错误。我也使用 androidx 并且没有支持库。有时这种崩溃看起来像:
Caused by java.lang.RuntimeException
Window couldn't find content container view ***.onCreate
不幸的是,我仍然不明白错误到底是什么,但我发现了这个post。我将
onCreate
方法更改为:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
getWindow().getDecorView();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
}
只需在
getWindow().getDecorView();
之前添加 super.onCreate(savedInstanceState);
就解决了我的问题。
当我想更改 navigationBarColor 时出现此错误。
override fun onCreate(savedInstanceState: Bundle?) {
window.navigationBarColor = ContextCompat.getColor(this, R.color.surface36)
super.onCreate(savedInstanceState)
..
在 super.onCreate 之前到达窗口可能会导致此崩溃。我改变了它并解决了。
调用此方法之前添加为空检查
if (YourContentFrameLayout != null)
YourContentFrameLayout.setDecorPadding(intvalue,intvalue,intvalue,intvalue);