0

編集 <<<<<<<<<

以下から取得した 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: 二重保存の問題を修正 - 現在は NULL 値のみ

4

1 に答える 1

1

2 つの挿入ステートメントがあるため、2 回格納されます。

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

ユーザー名が null の理由は、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 に答える