Java 将5添加到我的共享首选项中,并将其放入文本视图中

Java 将5添加到我的共享首选项中,并将其放入文本视图中,java,android,android-studio,sharedpreferences,Java,Android,Android Studio,Sharedpreferences,如果玩家第一次赢得关卡,我想做的就是增加5个“硬币”。 这是我得到的。它在下面 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_winroundactivity); **initialize();** } private void initialize()

如果玩家第一次赢得关卡,我想做的就是增加5个“硬币”。 这是我得到的。它在下面

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_winroundactivity);
    **initialize();**
}

private void initialize(){

SharedPreferences coin = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    String newcoin = coin.getString("coin","");
    Double coinnum = 0.0;
    try {
        coinnum = Double.parseDouble(newcoin);
    } catch (NumberFormatException e) {
        **coinnum = 0;** // your default value
    }


    level = getSharedPreferences("level",Activity.MODE_PRIVATE);
    levelunlock = getSharedPreferences("levelunlock",Activity.MODE_PRIVATE);

    if (level.getString("level","").compareTo(levelunlock.getString("levelunlock","")) == 1) {
        levelunlock.edit().putString("levelunlock", (level.getString("level", ""))).apply();

        if (level.getString("level","").equals("2")){
            coin.edit().putString("coin",Double.toString(coinnum) + 5).apply();
            textviewcoinnum.setText(newcoin);
        }

    }
我已经在下面发布了我的代码。@tahsinRupam的所有信用卡请尝试以下代码:

if (level.getString("level","").equals("2")){
   String prevCoin =  sharedPreferences.getString("coin", "");
   Double newCoin = Double.parseDouble(prevCoin) + 5;
   coin.edit().putString("coin", Double.toString(newCoin)).apply();
   textviewcoinnum.setText(coin.getString("coin",""));
   //supposed to add 5 coins and set set the new value as text in a textView.
}
SharedPreferences coin = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    String newcoin = coin.getString("coin","");
    double coinnum;
    try {
        coinnum = Double.parseDouble(newcoin);
    }catch (NumberFormatException e) {
        coinnum = 0;
    }


    level = getSharedPreferences("level",Activity.MODE_PRIVATE);
    levelunlock = getSharedPreferences("levelunlock",Activity.MODE_PRIVATE);

    if (level.getString("level","").compareTo(levelunlock.getString("levelunlock","")) == 1) {
        levelunlock.edit().putString("levelunlock", (level.getString("level", ""))).apply();

        if (level.getString("level","").equals("2")){
            coinnum = coinnum + 5;
            coin.edit().putString("coin",(Double.toString((coinnum)))).apply();
            newcoin = coin.getString("coin","");
            textviewcoinnum.setText(newcoin);
        }

    }
更新:要检查是否有有效的双精度值,请执行以下操作:

Double coinnum = 0.0;
try {
   coinnum = Double.parseDouble(newcoin);
} catch (NumberFormatException e) {
   coinnum = 0; // your default value
}

如果您有任何
NumberFormatException
,请检查日志猫。希望这有帮助。

以下是有效的代码。大部分功劳归于@tahsinRupam

SharedPreferences coin = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    String newcoin = coin.getString("coin","");
    double coinnum;
    try {
        coinnum = Double.parseDouble(newcoin);
    }catch (NumberFormatException e) {
        coinnum = 0;
    }


    level = getSharedPreferences("level",Activity.MODE_PRIVATE);
    levelunlock = getSharedPreferences("levelunlock",Activity.MODE_PRIVATE);

    if (level.getString("level","").compareTo(levelunlock.getString("levelunlock","")) == 1) {
        levelunlock.edit().putString("levelunlock", (level.getString("level", ""))).apply();

        if (level.getString("level","").equals("2")){
            coinnum = coinnum + 5;
            coin.edit().putString("coin",(Double.toString((coinnum)))).apply();
            newcoin = coin.getString("coin","");
            textviewcoinnum.setText(newcoin);
        }

    }

请检查下面的答案。我们将很快试用。谢谢你的建议@塔辛鲁帕诺问题。告诉我进展如何。它不喜欢双人的。应用程序在该活动上崩溃,错误为:无效双精度。我也尝试修复了一些其他错误。我用一些新代码编辑了我的帖子,但仍然不起作用。错误日志也是更新的吗?如果是,请突出显示winroundactivity.java中的39号和79号代码?这将非常有用。错误日志已更新。那些线现在已经被**包围了。