Android 即使应用程序未运行,如何保存要保留的Int?

Android 即使应用程序未运行,如何保存要保留的Int?,android,save,Android,Save,当我点击某个选项时,我希望出现一个复选标记,显示该选项已购买。我正在使用SharedReferences,并且已经建立了所有链接;但是,当我单击“上一步”或“退出”,然后重新进入应用程序时,检查将消失,我之前所做的任何操作的历史记录也将消失。我如何保存数据,以便即使在应用程序关闭或我在游戏的另一个页面时也能保存数据。这是我目前的代码: ImageView tick1; int mYellCheck, mYellCheck1; public static String sharedPrefs =

当我点击某个选项时,我希望出现一个复选标记,显示该选项已购买。我正在使用
SharedReferences
,并且已经建立了所有链接;但是,当我单击“上一步”或“退出”,然后重新进入应用程序时,检查将消失,我之前所做的任何操作的历史记录也将消失。我如何保存数据,以便即使在应用程序关闭或我在游戏的另一个页面时也能保存数据。这是我目前的代码:

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;
    }
}
编辑


还是只使用内部存储?

尝试用以下内容替换当前对R.id.ivMoreYellow的onClick调用:

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;

您首先覆盖SharedReferences中的所有数据,然后调用以接收刚刚重写的数据,因此我将getInt()调用放在putInt()之前。你会把mYellAplha改成255以外的吗?如果您不这样做,您将永远不会注意到SharedReferences中的更改,如果您总是保存并获取255个引用。

Um。您可以在构造函数中设置coins,但必须在调用update()之后,update()才能读取coins。另外,Replay、Replay4、Replay5和Replay6中的值在哪里设置?是否应该从SharedReference设置它们?在onClick()中设置
mYellCheck=data.getInt(“MoreYellowUpgrade”,0)
,然后在构造函数中加载数据,然后使用mYellCheck,但不建立两者之间的关系。谢谢,代码会出错,但当我回到主页,然后再次转到此(升级)页面时,检查丢失了,保存的数据也不在那里。我认为你真的应该把所有东西都简化到最基本的部分,这样你才能理解共享引用是如何工作的。首先获取一个布尔值以保存在SharedReferences文件中。创建一个初始值为false的布尔值“myBoolean”,然后在onCreate()中执行data.getBoolean(“boolean”,false);使用System.out.println(myBoolean);验证它是否先加载false。然后单击按钮将布尔值更改为true并执行editor.putBoolean(“boolean”,myBoolean);commit();下一步完全关闭应用程序,将其重新加载,您的输出应显示为真。谢谢,我按照您所说的做了,并使用了您的代码,我已经解决了我的问题。谢谢你,伙计