2012-01-13 3 views
0

EDIT < < < < < < < < <некорректные данных ввода в базу данных с SQLite

Я обнаружил, что имя_пользователь извлекается снизу возвращается в нуле. Кто-нибудь скажет мне, почему?

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] 

Где [правильная оценка] является выходным он должен иметь

Почему имя_пользователя не сохраняется, а вместо repalced с нулем?

EDIT 1: FIXED ДВОЙНОЙ СОХРАНИТЬ ПРОБЛЕМА - теперь просто нулевое значение

ответ

1

У вас есть две инструкции вставки, поэтому она в два раза хранения.

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

Почему имя пользователя является недействительным, вы не назначили GetUserName() на имя пользователя (см мой код ниже). С безопасной стороны я бы поставил System.out прямо перед вставкой данных и убедитесь, что UserName действительно туда попадает.

public void saveHighscore() { 

    scoreSaved = true; 

    userName=getUserName(); 

    DatabaseOpenHelper database = new DatabaseOpenHelper(this); 

    database.addHighscore(userName, numberOfGuesses); 

    database.close(); 

} 
+0

Я не знал, что это место, в котором выбрано имя пользователя, было актуальным, проблема, и, оказывается, это так. Я собираюсь отредактировать свой оригинальный вопрос, чтобы показать, где пользовательское имя выбрано и, надеюсь, может работать с помощью людей оттуда –

+0

Отлично! Я бы предложил вместо этого отредактировать новый вопрос с обновленным кодом, который был бы чистым. Это тебе решать. – kosa

+0

Я никогда не использовал DialogBox, но одна вещь, которую вы можете попробовать, - внутри onclickListener, userName = v.findViewbyId (R.id.userName) .getText(). ToString(); – kosa