Java 将5添加到我的共享首选项中,并将其放入文本视图中
如果玩家第一次赢得关卡,我想做的就是增加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()
@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号代码?这将非常有用。错误日志已更新。那些线现在已经被**包围了。