在方向更改中保存TextView的设置 - Android?

时间:2013-08-19 09:48:08

标签: android text view colors orientation

我使用单个选项菜单按钮“切换颜色”动态设置应用中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是“全局”布尔值,取决于函数是否为true / false设置textviews颜色。 (如果它是白色的黑色,则将其设置为黑色背景上的白色文本......反之亦然)

经过一番研究后,我修改了以下额外功能: 由于在方向更改时,应用程序暂停并恢复,我修改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中定义的那个,在白色背景上的黑色文本..)

怎么了?

谢谢!

1 个答案:

答案 0 :(得分:0)

将它们保存在捆绑包中

@Override
protected void onSaveInstanceState (Bundle outState) {
    outState.putBoolean("CFLAG",CFlag);
}

它将在Activity onCreate中恢复。

@Override
protected void onCreate (Bundle savedInstanceState) {
   CFlag = savedInstanceState.getBoolean("CFLAG");
}