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

finish() 로 현재 activity만 종료

0 추천
Aactivity에서 Bactivity로 이동했을때

 

B에서 back key를 눌럿을때 A로 돌아 가고 싶습니다.

 

근데 finish하면 전체가 종료 되네요.. ㅠㅠ this.finish()로도 전체가 종료 되어져버립니다.

 

intent flag를 어떻게 지정하면 현재 activity만 종료하나요 ????
now882002 (3,860 포인트) 님이 2014년 11월 13일 질문

3개의 답변

0 추천
 
채택된 답변
답!! 찾았습니다....

어처구니 없게도...

manifast파일에 ....noHistory="true"

되어있네요..

삭제 하니 정상적으로 동작합니다.. ㅠㅠㅠㅠㅠㅠ

답주신분들 감사합니다.
now882002 (3,860 포인트) 님이 2014년 11월 13일 답변
0 추천
혹시 a에서 b를 호출한 다음에 a에서 finish를 호출하지 않나요?
쎄미 (162,410 포인트) 님이 2014년 11월 13일 답변
아뇨 b를 호출할때는 a에서 ondestroy타지 않아요 ㅜㅜ
b에서 finsh하면 a에서 ondestroy탑니다.
intent 호출할때 flag문제 인거같은데..Intent.FLAG_ACTIVITY_CLEAR_TOP를 추가 했는데 둘다 없어져버리네요.. ㅠ
뭐가문제인지 모르겠습니다 ㅠ
a에서 b를 호출하는 부분과 b에서 finish하는 부분 소스 보여주실수 있나요?
호출 : intent = new Intent(MainActivity.this, USBClient.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(intent);

finish :
public boolean onKeyUp(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
          if( keyCode == KeyEvent.KEYCODE_BACK )
            {
               this.finish();
               return false;
            }
        return super.onKeyDown(keyCode, event);
    }
this.finish();는 당연히 USBClient.class에 있구요
a->b로 호출하실때 Clear_Top을 쓰시면

Activity는 b만 남게되는거 아닌가요?
Clear_top이 기존 스택에 저장되어있는 액티비티를 전부 없애는 플래그로 알고있어용ㅎㅎ
근데 저 플래그를 지워도 다 종료되네요 ㅠㅠ
플래그가 없으면 스택에 그대로 쌓이는거 아닌가요 ?? ㅠㅠ
이상하네요 저 플래그때문인줄알았는데....ㄷㄷ

this.finish() 를 그럼.. USBClient.this.finish()로 한번 직접 명시해보시겠어요?
ㅠㅠ 명시를 해줘도 안되네요.. ㅠㅠ 하아.. 이유를 모르겠어요 ㅠㅠ
menifest에도 clear top 같은거 없나요?
0 추천
소스는 문제가 없는것 같은데.. 원인을 잘 모르겠네요..

저같은 경우는 FLAG_ACTIVITY_SINGLE_TOP으로 b를 호출하고, b에서 종료시에 finish를 호출하지 않고 onbackpressed()를 호출해서 b를 종료하면 a가 그냥 남아있더라고요..

혹시 위에서 처럼 한번 해보시죠? 그래도 안되면 b에서 종료시에 a를 다시 startactivity해주는 방법밖에 없을거 같군요..
지미라 (4,330 포인트) 님이 2014년 11월 13일 답변
...