0

我只是一个 android 的初学者,并试图开发一个具有各种基本功能的应用程序来熟悉它们。我正在尝试保护用户选择的 textview 颜色设置。当方向改变时,这种颜色会丢失。我已经阅读了有关如何为方向更改保存内容的多个线程,但是所有这些示例都带有字符串或布尔值等。 保存活动状态

我想从 xml 文件中保存一个值。所以我必须保存一段设置颜色而不是原始数据类型的代码。

设置颜色的部分代码:

public void onClick(DialogInterface dialog, int item) {
    switch(item){
        case 0:
            mWelcomeUser.setTextColor(getResources().getColor(R.color.purple_color));
            break;
        case 1:
            mWelcomeUser.setTextColor(getResources().getColor(R.color.red_color));
            break;

部分xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="purple_color">#A420A0</color>
    <color name="red_color">#FF0000</color>
    <color name="green_color">#00FF00</color>
    <color name="black_color">#000000</color>
    <color name="blue_color">#0000FF</color>
    <color name="grey_color">#828282</color>
</resources>

现在我想在 onPause() 中保存颜色设置并在 onResume() 中检索它。但我无法弄清楚这一点。我试图把它放在一个像这样的 int (颜色)中:

public void onPause(){
    super.onPause(); 
    color = mWelcomeUser.getCurrentTextColor();
}

public void onResume(){
    super.onResume();
    mWelcomeUser.setTextColor(color);
}

最简单的方法是什么?

谢谢

4

1 回答 1

0

当方向改变时,android会暂停正在运行的活动或破坏它。所以我设置了onPause()和onDestroy()方法来保存文本颜色,在onCreate()和onResume()中我们将再次获得文本颜色。我用过SharedPreferences 来解决您的问题。

我在下面提供答案......

private SharedPreferences mPrefs;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);

    SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
    mWelcomeUser.setTextColor(mPrefs.getInt("currentColor", Color.RED));
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();

     SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
     mWelcomeUser.setTextColor(mPrefs.getInt("currentColor", Color.RED));
}

    @Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();

    SharedPreferences.Editor ed = mPrefs.edit();
    ed.putInt("currentColor", mWelcomeUser.getCurrentTextColor());

    ed.commit();
}

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();

    SharedPreferences.Editor ed = mPrefs.edit();
    ed.putInt("currentColor",  mWelcomeUser.getCurrentTextColor());

    ed.commit();
}
于 2012-08-16T11:30:36.857 回答