Как изменить фоновый файл диалога в студии android? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь создать диалоговое окно в 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) 
...