1

オプションをクリックしたときに、購入済みであることを示すチェック サインが表示されるようにします。私は使用SharedPreferencesしており、すべてのリンクを作成しています。ただし、[戻る] または [終了] をクリックしてアプリケーションを再起動すると、チェックが消え、以前に行った履歴がすべて失われます。アプリケーションがオフのときやゲームの別のページにいるときでもデータが保持されるようにするにはどうすればよいですか? これまでの私のコードは次のとおりです。

ImageView tick1;
int mYellCheck, mYellCheck1;
public static String sharedPrefs = "MyData";
SharedPreferences data;
SharedPreferences.Editor editor;
int mYellAlpha;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.upgrades);
    update();
    coins = Replay.totalCoins + Replay4.totalCoins + Replay5.totalCoins
        + Replay6.totalCoins;
    data = getSharedPreferences(sharedPrefs, MODE_PRIVATE);
    tick1.setAlpha(mYellCheck);
}

public void update() {
    TextView coinScore = (TextView) findViewById(R.id.tvScore);
    coinScore.setText("You have " + coins + " coins");
    tick1 = (ImageView) findViewById(R.id.ivtick1);
    ImageView moreYellow = (ImageView) findViewById(R.id.ivMoreYellow);
    ImageView back = (ImageView) findViewById (R.id.ivBack);
    back.setOnClickListener(this);
    moreYellow.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.ivMoreYellow:
        mYellAlpha = 255;
        SharedPreferences.Editor editor = data.edit();
        editor.putInt("MoreYellowUpgrade", mYellAlpha);
        editor.commit();
        data = getSharedPreferences(sharedPrefs, MODE_PRIVATE);
        mYellCheck = data.getInt("MoreYellowUpgrade", 0);
        tick1.setAlpha(mYellCheck);
        break;
    case R.id.ivBack:
        Intent i = new Intent ("m.k.zaman.SpotActivity");
        startActivity(i);
        break;
    }
}

編集

または、内部ストレージを使用する必要がありますか?

4

1 に答える 1

0

現在の onClick 呼び出しを R.id.ivMoreYellow に置き換えてみてください:

case R.id.ivMoreYellow:
    mYellAlpha = 255;
    mYellCheck = data.getInt("MoreYellowUpgrade", 0);
    tick1.setAlpha(mYellCheck);
    SharedPreferences.Editor editor = data.edit();
    editor.putInt("MoreYellowUpgrade", mYellAlpha);
    editor.commit();
    break;

最初に SharedPreferences 内のすべてのデータを上書きしてから、上書きしたばかりのデータを受け取るために呼び出すので、putInt() の前に getInt() 呼び出しを配置し​​ました。しかし、mYellAplha を 255 以外に変更しますか? そうしないと、常に保存して 2​​55 を取得している場合、SharedPreferences の変更に気付くことはありません。

于 2012-07-23T04:41:48.577 に答える