에 도달 할 경우 outofbounds 예외가 발생합니다. 이것은 장치의 최고 점수가 100 점을 초과하여 SharedPreferences에서 다음 번에 응용 프로그램이 충돌 할 때 응용 프로그램이 중단 될 때까지 완벽하게 작동합니다. 다음은 SharedPreferences에서 점수를 저장하고 검색하는 것과 관련된 코드입니다.Android 앱은 sharedpreferences에 높은 점수 값을 int로 저장합니다. 응용 프로그램은 100 개 이상의 점수가 나는 장치에 게임에 대한 높은 점수를 저장 된 SharedPreferences를 사용하는 안드로이드 게임을
public void setHighScore(int score) {
SharedPreferences.Editor settingsEditor = prefs.edit();
settingsEditor.putInt(Constants.KEY_HIGHSCORE, score);
settingsEditor.commit();
}
public int getHighScore() {
return prefs.getInt(Constants.KEY_HIGHSCORE, 0);
}
if (score > activity.getHighScore()) {
activity.setHighScore(score);
}
yourScoreText.setText("Your Score: " + score);
yourScoreText.setColor(Color.GREEN);
yourScoreText.setVisible(true);
highScoreText.setText("High Score: " + activity.getHighScore());
highScoreText.setColor(Color.RED);
highScoreText.setVisible(true);
로그 캣
09-19 22:00:13.612: W/dalvikvm(26458): threadid=12: thread exiting with uncaught exception (group=0x417a9898)
09-19 22:00:13.622: E/AndroidRuntime(26458): FATAL EXCEPTION: UpdateThread
09-19 22:00:13.622: E/AndroidRuntime(26458): java.lang.ArrayIndexOutOfBoundsException: length=360; index=360
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.entity.text.vbo.HighPerformanceTextVertexBufferObject.onUpdateVertices(HighPerformanceTextVertexBufferObject.java:124)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.entity.text.Text.onUpdateVertices(Text.java:333)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.entity.shape.Shape.setSize(Shape.java:146)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.entity.text.Text.setText(Text.java:221)
09-19 22:00:13.622: E/AndroidRuntime(26458): at hungryfish.scene.GameScene.reset(GameScene.java:246)
09-19 22:00:13.622: E/AndroidRuntime(26458): at hungryfish.scene.GameScene.onSceneTouchEvent(GameScene.java:308)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.entity.scene.Scene.onSceneTouchEvent(Scene.java:387)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.engine.Engine.onTouchScene(Engine.java:470)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.engine.Engine.onTouchEvent(Engine.java:456)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.input.touch.controller.BaseTouchController$TouchEventRunnablePoolItem.run(BaseTouchController.java:102)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.util.adt.pool.RunnablePoolUpdateHandler.onHandlePoolItem(RunnablePoolUpdateHandler.java:54)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.util.adt.pool.RunnablePoolUpdateHandler.onHandlePoolItem(RunnablePoolUpdateHandler.java:1)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.util.adt.pool.PoolUpdateHandler.onUpdate(PoolUpdateHandler.java:88)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.input.touch.controller.BaseTouchController.onUpdate(BaseTouchController.java:62)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.engine.Engine.onUpdate(Engine.java:604)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.engine.LimitedFPSEngine.onUpdate(LimitedFPSEngine.java:57)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.engine.Engine.onTickUpdate(Engine.java:568)
09-19 22:00:13.622: E/AndroidRuntime(26458): at org.andengine.engine.Engine$UpdateThread.run(Engine.java:858)
나는 간단한 안드로이드 게임을 개발하고 높은 점수 같은 유지하고있다. 공유 환경 설정에서 100 개가 넘는 기록을 유지할 수 있습니다. 나는 오류가 응용 프로그램의 다른 곳이라고 생각합니다. – savepopulation
전체 스택 추적을 표시하십시오. 그 순간 당신은 우리에게 * 어떻게 * 충돌하는지에 대해 아무 것도 말하지 않았습니다. 또한 코드 서식에 더 많은주의를 기울여주십시오. 들여 쓰기는 지금 곳곳에 있습니다. –
내가 더보고 계속 하겠지만,이 점수가 100 이상 때까지 발생하지 않는 이상하다 – IrishCarBomb