나는 재 시합을 할 수있는 2 인 게임을 만들고있다. 나는 또한 각 선수의 점수를 추적하고있다. 사용자가 재 대결 버튼을 클릭하면 위의 코드를 호출앱을 다시 시작한 후 점수를 기억하는 방법은 무엇입니까?
public void rematch(View view) {
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(i);
}
:이 같은 재 대결에 대한 내 코드는 모습입니다. 기본적으로 응용 프로그램을 다시 시작하기 때문에 모든 변수를 재설정하는 것보다 쉽습니다. 어쨌든, 나는이 같은 onStop()
메서드를 재정의하고, 점수를 추적하기 :
@Override
protected void onStop() {
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(SCORES_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("scoreOne", p1Score);
editor.putInt("scoreTwo", p2Score);
editor.commit();
}
을 내가 공유 환경 설정을 사용하고 있습니다. 그런 다음 내에서 onCreate 방법으로,이 같은 이러한 공유 설정을 얻을 :
// Remember scores from previous games
SharedPreferences settings = getSharedPreferences(SCORES_NAME, 0);
p1Score = settings.getInt("scoreOne", 0);
p2Score = settings.getInt("scoreTwo", 0);
updateScores();
SCORES_NAME
이 모두 작동하지 public static final String SCORES_NAME = "MyScores";
입니다. 게임을 다시 시작한 후 내 점수는 항상 0으로 돌아갑니다. 나는 rematch()
에있는 의도에 추가 정보를 넣을 생각 이었지만 내 onCreate()
메서드에서이 의도에 액세스하는 방법을 모르겠습니다. 어떤 도움이라도 대단히 감사합니다!
SharedPreferences의 변수에 이전에 저장 한 값이 있는지 확인합니다. – MyMy
@Mayk 어떻게해야할지 모르겠습니다. 제발 좀 더 자세히 설명해 주시겠습니까? – Zelda
이전에 SharedPreferences에 저장 한 값을 요청할 때 onCreate에서 응용 프로그램을 다시 시작한 후에 반환되는 값을 인쇄하도록했습니다. 예 : System.out.println (p1Score); 문제가 어디에서 왔는지 알아 내려고합니다. – MyMy