0

버튼을 클릭하여 사용자가 점수를 얻는 게임 활동이 있습니다. 내가하고 싶은 것은 이러한 포인트를 주 활동, 사용자가 보는 첫 번째 활동으로 전달하는 것입니다. 예를 들어, 사용자는 게임 활동을 시작하고 몇 가지 포인트를 얻고 애플리케이션을 완전히 종료합니다. 애플리케이션을 다시 시작하면 주 활동에 대한 총 포인트를 볼 수 있습니다.하나의 활동에서 데이터 가져 오기 및 다시 실행시 다른 활동에 저장

주 활동 중에 데이터를 얻기 위해 startActivityForResults를 사용하고 있지만 뭔가 빠졌습니다. 앱이 다시 시작될 때 저장된 점을 얻도록 점을 게임 활동에 저장해야한다고 생각합니다. 나는 올바른 방향으로 향하고 있는가? 그렇다면 포인트를 어떻게 저장할 수 있습니까?

내가 가진 또 다른 아이디어는 게임 활동에서 사용자가 포인트를 얻는 동안 포인트가 주요 활동으로 바로 전송되어 거기에 저장된다는 것입니다. 사용자가 애플리케이션을 다시 시작하면 주 활동은 포인트를 찾기 위해 게임 활동으로 갈 필요가 없으며 주 활동에 이미 저장됩니다. 이 방법이 동일하거나, 더 좋거나, 더 나쁩니 까?

답변

1

사용 하시려는 것이 SharedPreferences이라고 생각합니다. 그들은 모든 액티비티에서 액세스 할 수 있으며 앱 재방송에서 데이터를 유지합니다. GameActivity에서 달성 한 (그리고 저장 한) 새 데이터/새 점수가 있으면 MainActivity에서 onResume()을 체크인 할 수 있습니다.

Here's a guide SharedPreferences 사용법. Btw. 이름에 속지 말고, '기본 설정'뿐만 아니라 모든 종류의 것들을 저장할 수 있습니다.

1

이 경우 startActivityForResult을 사용할 필요가 없습니다. 가장 간단한 해결책은 두 점수로 액세스 할 수있는 SharedPrefrences 파일에 현재 점수를 저장하는 것입니다.

class ActivityOne extends Activity { 
    private void saveUserScore(int score) { 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
     prefs.edit().putInt("score", score).commit(); 
    } 
} 

class ActivityTwo extends Activity { 
    private int getUserScore() { 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
     return prefs.getInt("score", 0); 
    } 
}