문제 만들기 화면에서 실수로 뒤로 버튼을 눌러 만들던 문제 내용이 날라가버린 적이 종종 있었다.
이 문제를 해결하기위해 뒤로 버튼을 빠르게 두 번 눌렀을 때만 액티비티를 종료하도록 만들었다.
문제를 만드는 화면의 코드인 MakeActivity.java에 뒤로 가기 버튼이 눌렸을 때의 시간을 저장하는 backpressedTime
변수를 선언하였다.
public class MakeActivity extends AppCompatActivity {
...
private long backpressedTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_make);
...
backpressedTime = 0;
그 후 뒤로 버튼이 눌렸을 때 호출되는 함수인 onBackPressed()
를 재정의하였다.
@Override
public void onBackPressed() {
if (System.currentTimeMillis() > backpressedTime + 2000) {
backpressedTime = System.currentTimeMillis();
Toast.makeText(this, "\'뒤로\' 버튼을 한번 더 누르면 종료합니다.", Toast.LENGTH_SHORT).show();
} else if (System.currentTimeMillis() <= backpressedTime + 2000) {
finish();
}
}
System.currentTimeMillis
로 현재 시간을 받아 backpressedTime
에 2초를 더한 시간과 비교한다.
처음 상태에선 backpressedTime
에는 0이 저장되어 있으므로 당연히 현재 시간 쪽이 크다.
그 때는 backpressedTime
에 지금 시간을 저장하고 Toast 메시지를 띄운다.
이제 다음부터 뒤로 버튼이 눌렸을 때는 현재 시간과 (뒤로 버튼이 눌렸을 때의 시간 + 2초)를 비교하게 된다.
만약 2초안에 뒤로 버튼을 두 번 눌러 현재 시간이 (뒤로 버튼이 눌렸을 때의 시간 + 2초)보다 작아졌다면 그 때 액티비티를 종료시킨다.