0

编辑 <<<<<<<<<

我发现从下面检索到的用户名返回为空。有人告诉我为什么吗?

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]

其中 [正确分数] 是它应该具有的输出

为什么用户名没有被保存,而是用 null 代替?

编辑 1:修复了双重保存问题 - 现在只是 NULL 值

4

1 回答 1

1

您有两个插入语句,这就是它存储两次的原因。

 db.insert(HIGHSCORE_TABLE, null, value);
        long dbcheck = db.insert(HIGHSCORE_TABLE, null, value);

为什么用户名为空,您没有将 getUserName() 分配给 userName(请参阅下面的代码)。安全的一面我会在插入数据之前将 System.out 放在正确的位置,并确保 userName 真的到达那里。

public void saveHighscore() {

    scoreSaved = true;

    userName=getUserName();

    DatabaseOpenHelper database = new DatabaseOpenHelper(this);

    database.addHighscore(userName, numberOfGuesses);

    database.close();

}
于 2012-01-13T18:55:06.280 回答