안드로이드 생명주기에 의하면, finish()를 호출하면 현재 액티비티의 데이터를 모조리 없애버리는 걸로 알고 있습니다. 그러므로, 인덱스 변수가 액티비티 안에 선언되어 있을 경우, 같이 사라지겠지요 ㄷㄷㄷㄷ
액티비티를 여는 intent에 같이 인덱스 변수를 putExtra로 넣어 startActivityForResult 메소드로 액티비티를 쏴보세요.
그 후에, 새 액티비티에서 인덱스를 getExtra로 꺼내보는 건 어떨까요?
인덱스를 ++해서 값을 상승시킨 후, setResult로 다시 인덱스 변수를 전 액티비티로 보내면 액티비티 재실행하고도 인덱스를 유지할 수 있을 것입니다.
Intent intent = new (currentActivity.this, nextActivity.class);
Bundle extras = intent.getExtras();
extras.putExtra("INDEX", (int)index);
startActivityForResult(intent, 1);
//새 액티비티로 넘어갈 Intent와 호출한 액티비티로부터 데이터를 받을 수 있는 startActivityForResult입니다.
//새 액티비티에서는
//Intent를 받고
Intent intent = getIntent();
//Index를 추출해다가 값을 상승시킵니다.
int index = intent.getInt("INDEX");
index++;
//다시 인덱스 변수를 전 액티비티로 내보낼 Intent
Intent returnIntent = new Intent();
//Intent에 putExtras로 다시 인덱스 변수를 넣습니다.
returnIntent.putExtras("newIndex", (int)index);
//전 액티비티에 있던 startActivityForResult의 결과물 이벤트를 설정하구요.
setResult(RESULT_OK, returnIntent);
//현 액티비티를 파괴합니다.
finish();
다시 전 액티비티로 돌아왔다면,
//안드로이드 startActivityForResult의 결과물을 받을 수 있는 onActivityResult 메소드입니다.
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == 1)
{
if(resultCode == RESULT_OK)
{
int index = data.getInt("newIndex");
}
}
}
다시 새 액티비티에서 setResult에 RESULT_OK 플래그를 넣으신걸 기억하시죠?
전 액티비티로 돌아왔을때, onActivityResult 메소드에서 resultCode가 RESULT_OK 플래그와 일치하다면, 갱신된 인덱스를 손에 얻으실 수 있습니다.