2015-07-16 2 views
0

Я действительно новичок в android и пишу простую игру для Android.
В игре, как и в большинстве игр, у вас есть счет, сейчас, я хочу, чтобы оценка была сохранена во внутреннем хранилище, и по какой-то причине мне удалось сохранить счет, но не загружать его обратно.
вот код:Ошибка внутренней памяти Android

final TextView best = (TextView) findViewById(R.id.best); 

public int read = -1; 
public StringBuffer buffer = new StringBuffer(); 
public String scoreTxt = buffer.substring(0, buffer.indexOf(" ") + 1); 
public int score = 0; 
// Save 
try { 
    fileOutputStream = openFileOutput("record.txt", Context.MODE_PRIVATE); 
    fileOutputStream.write(scoreString.getBytes()); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
}finally { 
    if (fileOutputStream != null) { 
     try { 
      fileOutputStream.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
Toast.makeText(MainActivity.this, "Save() works fine", Toast.LENGTH_SHORT).show(); 

// load 
try { 
    FileInputStream fileInputStream = openFileInput("record.txt"); 
    while ((read = fileInputStream.read())!= -1){ 
     buffer.append((char)read); 
    } 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
best.setText("Best: " + scoreTxt); 
Toast.makeText(MainActivity.this, "load() is good too " + scoreTxt, Toast.LENGTH_SHORT).show(); 


, когда я запустить приложение, нет аварии или ничего особенного в LogCat, но когда я когда-либо использовать scoreTxt выход ничего, только «».
Может ли кто-нибудь помочь мне решить эту проблему? Спасибо

ответ

0

Вы никогда не назначаете scoreTxt значение в своем коде.

+0

да, я на 5-й строке –

0

Вам нужно разобрать buffer после того, как он будучи populated.Now когда scoreTxt инициализируется buffer является нулевым

Вы должны заменить этот

best.setText("Best: " + scoreTxt); 

с

scoreTxt = buffer.substring(0, buffer.indexOf(" ") + 1); 
best.setText("Best: " + scoreTxt); 
+0

Я сделал это, и он все тот же –

+0

buffer.substring (0, buffer.indexOf ("") + 1); эта логика может быть неправильной. –

0

Кроме того, я не будет хранить игровой счет в файл, потому что оценка часто меняется, и вы хотите избежать доступа к диску. Храните его в SharedPreferences и время от времени очищайте его до файла в фоновом потоке.

Смежные вопросы