Как изменить UI_MODE_NIGHT с переключателем из меню - PullRequest
0 голосов
/ 14 февраля 2020

Я пробовал много разных подходов, чтобы достичь этого, и именно так я сейчас и пробую:

 override fun onCreateOptionsMenu(menu: Menu): Boolean {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu, menu)

    val item = menu.findItem(R.id.darkThemeSwitch)
    val actionView = item.actionView
    val switch = actionView.findViewById<View>(R.id.darkThemeSwitch) as Switch
    switch.setOnCheckedChangeListener { view, isChecked ->
        changeState()
    }


    super.onCreateOptionsMenu(menu)


    return true
}


fun changeState(){
    var currentNightMode = getResources().getConfiguration().uiMode
    Toast.makeText(this,currentNightMode, Toast.LENGTH_SHORT).show()
    when (currentNightMode) {
        Configuration.UI_MODE_NIGHT_YES -> {
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
        }
        Configuration.UI_MODE_NIGHT_NO -> {
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
        }
        Configuration.UI_MODE_NIGHT_UNDEFINED -> {
            Toast.makeText(this,"Er is iets misgegaan, contacteer de developer", Toast.LENGTH_SHORT).show()
        }

    }
}

Я даже не уверен, что это правильный путь назначить переключатель меню для переменной, но я думаю, что это потому, что эта ошибка срабатывает, когда я пытаюсь проверить это. У меня был рабочий вариант этой программы и раньше, но тогда коммутатор не проверял бы должным образом.

Но я получаю эту ошибку:

2020-02-14 10:23:25.488 29697-29697/com.example.converter E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.converter, PID: 29697
    android.content.res.Resources$NotFoundException: String resource ID #0x11
        at android.content.res.Resources.getText(Resources.java:367)
        at android.widget.Toast.makeText(Toast.java:313)
        at com.example.converter.MainActivity.onCreateOptionsMenu(MainActivity.kt:43)
        at android.app.Activity.onCreatePanelMenu(Activity.java:4074)
        at androidx.fragment.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:325)
        at androidx.appcompat.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:94)
        at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.onCreatePanelMenu(AppCompatDelegateImpl.java:2830)
        at androidx.appcompat.app.AppCompatDelegateImpl.preparePanel(AppCompatDelegateImpl.java:1746)
        at androidx.appcompat.app.AppCompatDelegateImpl.doInvalidatePanelMenu(AppCompatDelegateImpl.java:2026)
        at androidx.appcompat.app.AppCompatDelegateImpl$2.run(AppCompatDelegateImpl.java:263)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...