为什么我不能将分数增加2?

问题描述 投票:0回答:1

我不知道你怎么能不理解这么简单的任务,而是为了避免一切:

我的主要观点是每次点击按钮时将得分增加1(已完成)。我想更改增量,而不是将得分增加1,我想在点击升级按钮后将得分增加2。

目标:{MainActivity:你点击一个按钮,得分增加1. UpgradeActivity:你点击一个按钮,增量会改变,分数会立即增加2.我不能让它增加2,而不是一。}

在app分数中,我使用SharedPreference,MainActivity.java保存:

public void button(View view) {

    mScore++;

    SharedPreferences myScore = getSharedPreferences("Symbols", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = myScore.edit();
    editor.putInt("mScore", mScore);
    editor.commit();

    score.setText("Symbols: " + mScore);
}

UpgradeActivity:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_upgrade);

    score = findViewById(R.id.score);

    SharedPreferences myScore = this.getSharedPreferences("Symbols", Context.MODE_PRIVATE);
    mScore = myScore.getInt("mScore", 0);

    score.setText("Symbols: " + mScore);
}

public void upgrade(View view) {

    if(mScore>=200){

        SharedPreferences myScore = this.getSharedPreferences("Symbols", Context.MODE_PRIVATE);
        mScore = myScore.getInt("mScore", 0);

        mScore += 2;

        score.setText("Symbols: " + mScore);

        onResume();


        Intent intent = new Intent(this, PlayActivity.class);
        startActivity(intent);
    }else{

        Intent intent1 = new Intent(this, MainActivity.class);
        startActivity(intent1);
    }


}

}

我的观点并不奏效。它仍然会增加+1,所以我的UpgradeActivity或升级按钮可能有问题。

有什么建议?

android-studio android-sharedpreferences
1个回答
0
投票

从代码中可以看出,由于mScore++,此处的MainActivity总是+1

也许改成它

int increment = 1;

public void button(View view) {

    mScore = mScore + increment;

    SharedPreferences myScore = getSharedPreferences("Symbols", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = myScore.edit();
    editor.putInt("mScore", mScore);
    editor.commit();

    score.setText("Symbols: " + mScore);
}

然后

startActivityForResult(new Intent(this, UpgradeActivity.class), 1)

在UpgradeActivity.class中

public void upgrade(View view) {

    if(mScore>=200){
       setResult(RESULT_OK);
    }

    onBackPressed();
}

然后在MainActivity.class中

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
           increment = 2;
        }
    }
}

希望这个回答你的问题/或者会给你一些想法......

© www.soinside.com 2019 - 2024. All rights reserved.