0

私はアンドロイドの初心者で、あらゆる種類の基本機能を備えたアプリを開発して、それらに慣れようとしています。ユーザーが選択したテキストビューの色の設定を安全にしようとしています。この色は、向きが変わると失われます。向きの変更のために物事を保存する方法について複数のスレッドを読みましたが、これらの例はすべて文字列やブール値などを使用しており、 アクティビティ状態を保存しています

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 に答える