【问题标题】:Menu Item on/off day night mode菜单项开/关日夜模式
【发布时间】:2019-04-20 00:42:23
【问题描述】:

有必要将菜单项打开或关闭昼夜模式而不是开关。请帮助使用该功能。当应用程序处于日间模式时,用户从菜单中选择日/夜模式的项目菜单。没关系,开启了夜间模式,但是当从夜间模式中选择相同的项目时,没有任何变化,应该回到白天模式。请帮帮我。

boolean isNight = true;
switch (item.getItemId()) {
    case R.id.day_night:
        if (Button.isChecked()) {
            //display warning message
            Toast.makeText(getApplicationContext(), getString(R.string.warning_message), Toast.LENGTH_LONG).show();
            return false;
        } else {
            if (isNight) {
                getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);
            } else {
                getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);
            }
            break;
        }
}     

【问题讨论】:

  • 这段代码在哪里?如果您将isNight 初始化为true,那么每次执行此代码时都会为true。 MODE_NIGHT_NO 无法访问。
  • 我想帮助你,但我需要知道你到底想做什么。您想要一个激活和停用夜间模式的按钮吗?为什么在选中按钮时显示Toast?这段代码在哪里,在onClick 按钮事件中?
  • 非常感谢您的关注,您很友善,我添加了!isNight并更改了isNight = false;,现在可以使用了。非常感谢
  • 如果你设置isNight = false然后你测试if (!isNight)那么你将无法更改为MODE_NIGHT_YES
  • 没错,你是对的,在那种情况下呢? :( 我必须在菜单项 Day / Night 模式上单击两次才能从白天模式切换到夜间模式,而在夜间模式下我单击一次并进入白天模式没有任何问题。

标签: java android menuitem


【解决方案1】:

创建一个全局变量(onOptionsItemSelected之外)

boolean isNight;  // by default, isNight = false

然后在你的onOptionsItemSelected

switch (item.getItemId()) {
    case R.id.day_night:
        if (!isNight) {
            getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);
            isNight = true;
        } else {
            getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);
            isNight = false;
        }
        break;
    }
}     

【讨论】:

  • 非常感谢!!!我必须在菜单项日/夜模式上单击两次才能从夜间模式切换到日间模式,在日间模式下我单击一次并进入夜间模式没有任何问题。我在模拟器和手机上测试了你的代码。为什么?
  • 回答很有用,但还是有问题,请看我的评论。谢谢。
猜你喜欢
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多