마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

특정 액티비티에서만 onBackPressed()

0 추천
if(finishFlag)
{
finish();
}
else
{
Toast.makeText(getApplicationContext(), "Back키를 한번 더 누르면 종료됩니다."
, Toast.LENGTH_SHORT).show();
finishFlag = true;
}
 
안녕하세요, 현재 이런식으로 백버튼 두번을 누르면 앱을 종료하게끔 만들었는데요,
메인인 A.class 가 있고, 서브인 B.class 가 있습니다.. 
A.class에서 이것을 적용했더니, B에도 적용이 되버리는데요,
A.class 일 때에만 저 이벤트가 적용되도록 하는 방법이 있나요? 
anci (19,950 포인트) 님이 2014년 3월 27일 질문

2개의 답변

+3 추천
B 클래스에서 백프레스를 오버라이딩 하는 방법도 있겠네요

@Override
 public void onBackPressed(){
   finish();
  }
초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 27일 답변
감사합니다.^^일단 B.class에 추가하니, 적용됩니다.
네 super 클래스만 콜하지 않는다면 이 방법으로 하는게 낫지요
+2 추천

서브라고 하시는 걸 보니 B 가 A 를 상속하나 보군요.

 

그럼 간단하게

if (this instanceof A) {
	if(finishFlag)
	{
		finish();
	}
	else
	{
		Toast.makeText(getApplicationContext(),
				"Back키를 한번 더 누르면 종료됩니다.",
				Toast.LENGTH_SHORT).show();
		finishFlag = true;
	}
}

 

하던지 아니면 B 만 아니면 된다 하시면

if (this instanceof A) 를

if (!(this instanceof B)) 로 바꿔 주세요

AndroidDictator (1,660 포인트) 님이 2014년 3월 27일 답변
감사합니다..
근데 만약 더 여러개의 클래스가 있거나, 상속되지 않는 애들도 섞여있는 경우에는 다른 방법을 써야 하나요..?
...