如何在共享首选项中保存和更新点

时间:2018-03-18 08:33:10

标签: java android

我有 BoostPoints 活动,用户通过观看奖励视频广告来提高积分,当用户观看广告时,他们加起来就是积分,现在的问题是,当我关闭活动或应用时并重新打开它,积分回到零。例如,用户观看广告并获得100分,当用户关闭活动或应用而不使用这些点并稍后再次打开时,点消失并返回到零。即使用户关闭应用程序并稍后打开它,我希望这些点可用,他们应该看到他们离开的位置。

我在onCreate();

中尝试了此代码
//Save Coins
    SharedPreferences saveCoins = this.getSharedPreferences("mySaverCoins", Context.MODE_PRIVATE);
    pointsAmount = saveCoins.getInt("C",0);

当我使用此代码运行我的应用程序时,它不会保存我的硬币,每次启动它都会回到零。

我还尝试在`onCreate();

中添加这一行
pointsAvailable.setText("C"+pointsAmount);

但我的活动由于这条线而崩溃

我的完整 java.class 看起来像这样

public class BoostPoints extends AppCompatActivity  implements RewardedVideoAdListener {

public int pointsAmount = 0;

private RewardedVideoAd mAd;
Button freePoints;
TextView pointsAvailable;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_boost_points);

    getSupportActionBar().hide();


    MobileAds.initialize(getApplicationContext(), "ca-app-pub-3940256099942544~3347511713");

    mAd = MobileAds.getRewardedVideoAdInstance(this);
    LoadRewardedVideoAd();
    mAd.setRewardedVideoAdListener(this);

    freePoints=(Button) findViewById(R.id.btnFreePoints);


    //Save Coins
    SharedPreferences saveCoins = this.getSharedPreferences("mySaverCoins", Context.MODE_PRIVATE);
    pointsAmount = saveCoins.getInt("C",0);


    //Update Coins
    pointsAvailable.setText("C"+pointsAmount); //This line crashes my activity

    //Show points available
    pointsAvailable = (TextView) findViewById(R.id.pointsAvailable);

}


public void FreePoints(View view) {
    if (mAd.isLoaded()){
        mAd.show();

    }
}

private void LoadRewardedVideoAd()
{
    if (!mAd.isLoaded()){
        mAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build());

    }
}

@Override
public void onRewarded(RewardItem rewardItem) {
    pointsAmount = pointsAmount +10;
    pointsAvailable.setText("C"+pointsAmount);
}

}

我的代码可能会出现什么问题

1 个答案:

答案 0 :(得分:0)

您需要使用

int转换为String
pointsAvailable.setText("C"+String.valueOf(pointsAmount));

要保存积分,您需要将它们存储在SharedPreferences的{​​{1}}中:

onRewarded