2013-05-08 6 views
0

두 개의 활동, "A"와 "B"가 있습니다. "A"는 "B"를 엽니 다. 사용자가 활동 "B"에서 뒤로 버튼을 누르면 "A"를 보지 않고 "A"를 닫고 싶습니다. 그래서 "B"에 내가 이런 짓을 : Android : 이전 버전을 닫은 활동

@Override 
    public void finish() { 
     // TODO Auto-generated method stub 

     Intent intent = new Intent(this, LoginActivity.class).putExtra(TAG, TAG).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);            
     startActivity(intent); 
     //super.finish(); 
    } 

그리고, 내가 이런 짓 활동 "A"에

: 그것은 완벽하게 작동하지만,이 예외를 받고 미안

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);   

     if(getIntent().getExtras() != null) 
      if(getIntent().getStringExtra(HomeActivity.TAG) != "") 
       finish();    

    } 

:

E/ActivityThread(11115): Activity br.com.pedmobiledroid.view.controller.LoginActivity has leaked IntentReceiver com.a[email protected]42045be0 that was originally registered here. Are you missing a call to unregisterReceiver()? 

누군가가이 작업을 올바르게 수행하는 더 좋은 방법을 알고 있습니까?

+0

당신이 모든 활동 안에 수신기를 사용하여 질문 하나 내가이 있나요? 그리고 두 번째로, B를 끝내고 끝내기를 원한다면 왜 B를 시작하는 동안 A를 완성합니까? – Sameer

답변

0

그냥 ActivityB를 시작한 후 ActivityAfinish() 전화 :

Intent intent = new Intent(ActivityA.this, ActivityB.class); 
startActivity(intent); 
finish(); 
+0

그게 다야! 고마워요! – erickles

+0

@erickles, 오신 것을 환영합니다. – Egor

+0

@Ener 나는 finish()가 실행되지 않는다고 생각했다. 컨트롤이 끝나기 전에 이미 시작된 새로운 액티비티가 아니다. – tez

0

좋아요, 당신은 논리를 재정렬해야합니다. 대신 활동 B에서 오는 경우 활동 A를 살해가 활동 B.에 그 방법을 무슨 경우

, 단순히 사용자가 그래서 다시 :)

를 누를 때 그것이 가기 backstack에되지 않습니다, 활동을 죽일 A :

Intent startActivityBIntent = new Intent(this, MyClassB.class); 
startActivity(startActivityBIntent); 
this.finish(); 

A가 이미 완료되었으므로 활동 B에 코드가 필요하지 않습니다.

+0

네, 고마워요! – erickles