Я пытаюсь создать диалоговое окно в android studio , которое может изменить свой фоновый файл , когда приложение переключается между светлым и темным режимом .
Мое приложение работает нормально в светлом режиме, но когда я пытаюсь открыть диалоговое окно после переключения в темный режим, приложение вылетает со следующей ошибкой.
Здесь, это фрагмент кода.
public void showPopup(View view) {
// POPup Dialog object
popup = new Dialog(this);
popup.setContentView(R.layout.popup);
// Layout for popup
popupLayout = findViewById(R.id.aboutPopupLayout);
if (utils.isDarkmode()) {
popupLayout.setBackgroundResource(R.drawable.pop_bg_dark);
} else {
popupLayout.setBackgroundResource(R.drawable.pop_bg_light);
}
popup.show();
}
Это данные из файла журнала,
07-10 20:43:05.335 9761-9786/com.user.guessthenumber I/OpenGLRenderer: Initialized EGL, version 1.4
07-10 20:43:09.140 9761-9761/com.user.guessthenumber D/AndroidRuntime: Shutting down VM
07-10 20:43:09.141 9761-9761/com.user.guessthenumber E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.user.guessthenumber, PID: 9761
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21168)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5459)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21168)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5459)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.constraintlayout.widget.ConstraintLayout.setBackgroundResource(int)' on a null object reference
at com.user.guessthenumber.MainActivity.showPopup(MainActivity.java:242)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21168)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5459)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)