我正在使用单个选项菜单按钮“切换颜色”在我的应用程序中动态设置 textview 组件的背景颜色和文本颜色
问题是,一旦方向改变,textview 就会“忘记”它应该使用什么颜色......所以它使用默认值而不是那些由选项菜单设置的颜色。
这是选项菜单选项的原始功能:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
TextView textView = (TextView) findViewById(R.id.xxtt);
if (Cflag) {
textView.setBackgroundColor(Color.parseColor("#ffffff"));
textView.setTextColor(Color.parseColor("#000000"));
Cflag= false;
} else {
textView.setBackgroundColor(Color.parseColor("#000000"));
textView.setTextColor(Color.parseColor("#ffffff"));
Cflag= true;
}
return super.onOptionsItemSelected(item);
}
^Cflag 是“全局”布尔值,取决于函数设置文本视图颜色的真/假。(如果它是白底黑字,则将其设置为黑底白字……反之亦然)
在做了一些研究之后,这里是我修改的额外功能: 由于在方向更改时,应用程序会暂停和恢复,我修改了 onResume 以根据变量 Cflag 独立更改颜色。
还有 OnCofigChange,用于在方向改变时更新颜色。我已经尝试过使用这两个功能,并且我尝试过一次使用它们。没有任何帮助。
@Override
protected void onResume() {
TextView textView = (TextView) findViewById(R.id.xxtt);
if (Cflag) {
textView.setBackgroundColor(Color.parseColor("#ffffff"));
textView.setTextColor(Color.parseColor("#000000"));
} else {
textView.setBackgroundColor(Color.parseColor("#000000"));
textView.setTextColor(Color.parseColor("#ffffff"));
}
super.onResume();
}
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
TextView textView = (TextView) findViewById(R.id.xxtt);
if (Cflag) {
textView.setBackgroundColor(Color.parseColor("#ffffff"));
textView.setTextColor(Color.parseColor("#000000"));
} else {
textView.setBackgroundColor(Color.parseColor("#000000"));
textView.setTextColor(Color.parseColor("#ffffff"));
}
}
我不想不必要地使用 SharedPreferences 对象。
我认为这只是逻辑问题,
如果它是白色背景上的黑色文本(默认) .... 按选项菜单的选项,它会切换到黑色背景上的白色文本 .... Cflag 变量也被切换。
现在 Cflag 是常量,我们只需要根据 Cflag 重新设置文本颜色。
但我无法让它工作:我在一个方向上更改设置,并在切换方向时返回默认状态(我在 XML 中定义的那个,白色背景上的黑色文本..)
怎么了?
谢谢 !