编辑<<<<<<<<<<<
我发现从下面检索的userName将返回null。有谁告诉我为什么?
public void getUserName() {
getUserNameDialog = new Dialog(MasterMindGameActivity.this);
getUserNameDialog.setContentView(R.layout.retrieveusername);
getUserNameDialog.setTitle("Enter your Name");
getUserNameDialog.setCancelable(false);
TextView viewScore = (TextView) getUserNameDialog
.findViewById(R.id.showScore);
viewScore.setText("Your score was " + numberOfGuesses);
final EditText enterName = (EditText) getUserNameDialog
.findViewById(R.id.userName);
btnConfirm = (Button) getUserNameDialog
.findViewById(R.id.confirmUserName);
btnConfirm.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
userName = enterName.getText().toString();
getUserNameDialog.cancel();
}
});
getUserNameDialog.show();
}
显示类似
的内容Highscore
1: null - [correct score]
如果[正确分数]是它应该具有的输出
为什么没有保存userName,而是使用null重新定义?
编辑1:修复了双重问题 - 现在只是空值
答案 0 :(得分:1)
你有两个插入语句,这就是它存储两次的原因。
db.insert(HIGHSCORE_TABLE, null, value);
long dbcheck = db.insert(HIGHSCORE_TABLE, null, value);
为什么username为null,您没有将getUserName()分配给userName(请参阅下面的代码)。安全方面我会在插入数据之前将System.out置于正确位置,并确保userName真正到达那里。
public void saveHighscore() {
scoreSaved = true;
userName=getUserName();
DatabaseOpenHelper database = new DatabaseOpenHelper(this);
database.addHighscore(userName, numberOfGuesses);
database.close();
}