안녕하세요.
안드로이드공부하고 있는 학생입니다.

<조건>
※액티비티 생명주기에 따라 게임 플레이어(player)와 게임 점수(currentScore)를 정장하고, 불러오는 해당 콜 백 메서드를 조건에 맞도록 작성할것
.
ⅰ. 메인화면의 "게임하기" 버튼을 클릭하면 게임화면이 생성되어서, 저장되어 있는 게임 플레이어(player)와 게임 점수(currentScore)를 가져와 실행화면과 같은 토스트 메세지가 출력되도록 해당 생명주기 콜백 메서드를 구현.
- SharedPreferences객체의 인스턴스를 불러온다.(파일명 : PLAYER, 모드 : MODE)
- SharedPreferences 인스턴스가 null이 아니면서 "player"key를 포함하고 있으면, 게임 플레이어("player")와 게임 점수("currentScore")를 불러와 실행 결과와 같은 토스트 메시지가 출력되도록 해당 생명주기 콜백 메서드를 구현.
ⅱ. "게임시작(gameStart)"버튼과 "돌아가기(backButton)"버튼을 id로 구분하여 다음과 같이 처리하는 onDoGameClicked(View v) 메서드를 구현. (switch ~ case문 사용)
- "게임시작(gameStart)"버튼을 클릭할 때 마다 게임점수(currentScore)를 1점씩 누적하고, 실행결과와 같은 "Score : xx"로 출력하는 토스트 메시지 작성
- "돌아가기(backButton)"버튼을 클릭하면 인텐트에 "player"와"currentScore"를 key로 게임 플레이어(PLAYER)와 게임점수(currentScore)를 담아 메인화면으로 반환하고 게임화면을 종료할 것.
ⅲ. 게임화면에서 "돌아가기"버튼을 클릭하면 게임화면을 종료하기 전에 게임 플레이어(player)와 현재 게임점수(currentScore)를 저장하고, 실행화면과 같은 토스트 메시지가 출력되도록 해당 생명주기 콜백 메서드를 구현.
- SharedPreferences 객체의 인스턴스를 불러온다.(파일명 : PLAYER, 모드 : MODE)
- Editor를 사용하여 "player"key에 "홍길동"을 문자열로 게임 플레이어를 저장하고, "currentScore"key에 currentScore를 정수로 게임점수를 저장한 후, 실행화면과 같은 토스트 메시지가 출력되도록 해당 생명주기 콜백 메서드를 구현.
ⅳ. 게임화면으로부터 전달 받은 인텐트에서 player, currentScore를 가져와서 실행결과와 같은 토스트 메서드를 출력하는 콜백 메서드를 작성할 것.
- 콜백 메서드의 매개변수로 전달된 requestCode, resultCode를 활용할 것(switch ~ case문 사용)
제가 지금 코딩하고 있는 생명주기 실행화면과 조건이구요.
1번과 3번은 코딩을하였는데 2번과 4번을 계속 혼자해보다 도저히 안되서 이렇게 질문올려요.ㅠ
<SecondActivity.java>
public class SecondActivity extends AppCompatActivity {
public static final String PLAYER = "Player01";
public static final int Mode = Activity.MODE_PRIVATE;
int currentScore;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
}
/*1번 조건*/
protected void restoreFromSavedState() {
SharedPreferences myPrefs = getSharedPreferences(PLAYER, Mode);
if ((myPrefs != null) && (myPrefs.contains("player"))) {
String player = myPrefs.getString("player", "");
currentScore = myPrefs.getInt("currentScore", 0);
Toast.makeText(this, PLAYER + "의 직전 score : " + currentScore + "점을 불러왔습니다.", Toast.LENGTH_LONG).show();
}
}
/*2번 조건*/
public void onDoGameClicked(View v) {
switch (v.getId()) {
case R.id.gamebtn :
currentScore++;
Toast.makeText(this, "Score : " + currentScore , Toast.LENGTH_LONG).show();
break;
case R.id.backbtn :
Intent myIntent = new Intent(SecondActivity.this, MainActivity.class);
myIntent.
}
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
restoreFromSavedState();
super.onResume();
}
/*3번 조건*/
@Override
protected void onPause() {/*여기*/
SharedPreferences myPefs = getSharedPreferences(PLAYER, Mode);
SharedPreferences.Editor myEditor = myPefs.edit();
myEditor.putString("player", "홍길동");
myEditor.putInt("currentscore", 0);
myEditor.commit();
if ((myPefs != null) && (myPefs.contains("player"))) {
String player = myPefs.getString("player", "");
int currentscore = myPefs.getInt("currentscore", 0);
}
Toast.makeText(this, PLAYER + "의 현재 score : " + currentScore + "점을 저장합니다.", Toast.LENGTH_LONG).show();
super.onPause();
}
<MainActivity.java>
public class MainActivity extends AppCompatActivity {
public static final int REQUEST_CODE = 1001;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onButtonClicked(View v) {
Intent myIntent = new Intent(this, SecondActivity.class);
startActivityForResult(myIntent, REQUEST_CODE);
}
.
.
.
.
.
@Override
protected void onRestart() {
super.onRestart();
}
/*4번 조건*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE:
if (requestCode == REQUEST_CODE) {
/*String player = String.format();*/
Toast.makeText(this, requestCode + "의 오늘 게임점수는" + resultCode + "점 입니다.", Toast.LENGTH_LONG).show();
}
}
}
}
하루종일 붙잡고 있는데도 도저히 "2번과 4번" 어떻게 풀어나가야될지 생각이 안나네요ㅠㅠㅠ제발 도와주세요ㅠㅠㅠ
p.s. 조건이 잘 안보여서 다시 올려요ㅠㅠㅠㅠㅠ