Я пробовал много разных подходов, чтобы достичь этого, и именно так я сейчас и пробую:
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)
Заранее спасибо!