每次请求SharedPreference时,应用程序都会崩溃

时间:2017-10-01 20:36:05

标签: java android sharedpreferences android-sharedpreferences

我想为2个活动存储一个int,在第一个被加载的时候和在另一个活动中存储(并加载以进行比较,如果它仍然相同)。

活动A:

textView = (TextView) findViewById(R.id.score);

SharedPreferences preferences = getSharedPreferences("Pref", 0);
int score = preferences.getInt("Highscore", 0);
textView.setText(Integer.toString(score));

活动B(在onPause()部分):

SharedPreferences preferences = getSharedPreferences("Pref", 0);
int pref_score = preferences.getInt("Highscore", 0);

if (new_score > pref_score) {
    SharedPreferences.Editor editor = preferences.edit();
    editor.putInt("Highscore", gameView.getScore());
    editor.commit();
}

当我运行应用程序时,它会立即崩溃。活动A首先被调用,到目前为止没有任何存储可能是一个问题? 如果我在活动A中对它进行注释,它将一直有效,直到B中的onPause()函数被调用(Home Button)。

修改 将all更改为int,仍然崩溃logcat

2 个答案:

答案 0 :(得分:1)

您正在使用" putString"和" getInt"。
所以你把它保存为String,但试着把它作为一个Integer。因此它尝试将String转换为Int,即ClassCastException。

您必须保存并将其作为相同的类型。

答案 1 :(得分:1)

Activity Apreferences.getInt() Activity B使用preferences.edit().putString()时使用String

修复此问题后,您必须卸载/重新安装您的应用或覆盖SharedPreference中包含的getInt()值,否则当您尝试通过const express = require('express'); const bodyParser = require('body-parser'); const mustacheExpress = require('mustache-express'); const pgp = require('pg-promise'); const port = process.env.PORT || 3000; const app = express(); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.engine('html', mustacheExpress()); app.set('view engine', 'html'); app.set('views', __dirname + '/views'); app.use(express.static(__dirname + '/public')); const students = require('./controllers/students.js'); const houses = require('./controllers/houses.js'); app.use('/houses', houses); app.use('/students', students); app.get('/', (req, res) => res.render('home/index')); app.listen(port, () => { console.log("Server started on " + port); }); module.exports = router; 时它仍然会崩溃1}}。