2016-06-30 4 views
-1

I 세 활동 (A는 B, C)는,탐색 활동 사이

활동 A의 버튼이 활동 B

및 활동 B에 대한 사용자를 전송 활동을 사용자에게 전송 다른 단추가있을 C, finish()도 Activity B에서 호출됩니다. 그들이 활동 C에있는 동안 사용자가 장치의 버튼을 다시 누를 때마다

이제, 내가 이런 일이하고 싶지 않은 활동 A.로 전송합니다. 사용자가 액티비티 C에서 뒤로 버튼을 누르면 앱이 끝나야합니다. 또는 '최근 스크린'탭으로 이동 하시겠습니까? 네가 뭐라고 부르든간에. 제발이 일을 도와주세요.

+0

을 그리고 활동 B의 뒤로 버튼을 클릭 할 때 활동 A로 가고 싶습니까, 아니면 앱을 종료하고 싶습니까? – Drv

+0

A는 B의 부모이므로 B를 다시 클릭하면 A가 시작됩니다. 그건 잘 작동합니다. 그러나 활동 C에는 부모가 없어야합니다. 나는 C의 부모로 A를 선언하지는 않았지만 여전히 버튼을 다시 클릭하면 열립니다. –

+0

당신이 활동 (A)에에 startActivityForResult를 사용하고 활동 B와 C에서 호출이 발행 피할 수 –

답변

2

이 같은 활동의 C에 onBackPressed 재정의보십시오 :

@Override 
public void onBackPressed() { 
    finishAffinity(); 
} 

나이 apilevel를 들어 활동 C 시작할 때> = 11이 시도 :

Intent intent = new Intent(MainActivity.this, TestActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 
+0

지금이 시도됩니다. finishAffinity()는 무엇입니까? 해야 할 것? –

+0

이 활동뿐만 아니라 현재 작업에서 동일한 선호도를 갖는 모든 활동을 마칩니다. https://developer.android.com/reference/android/app/Activity.html#finishAffinity() – babadaba

+0

가 나는 이것이 내가 찾고 있지만 분 API 레벨 16 :( –

0

시나리오 1 : 당신은 완료 할 수 방법() Activity C에 onBackPress()를 오버라이드하고 finish() 메소드를 호출하십시오.

시나리오 2 : C가 아닌 B에서 돌아 오는 동안 Activty A를 끝내려면 Activty를 매시간마다 끝내십시오. start onBackPress에서 덮어 씀으로써 이전 활동을 시작하십시오.)

예를 들어`

onBackPress() 
{ 
Intent intent = new Intent(this,prevActivity.class); 
startactivty(intent); 
finish(); 
} 

당신이 onBackPress() insyead 운영 체제의 startActivity를() 할 일에 startActivityForResult()를 오버라이드 (override) 할 때 또 다른 방법은;

그와 코드를 보냅니다. 결과에 대한 활동에 대한 모든 클래스 핸들에서 및 특정 코드는 마무리() 활동 A의 버튼을 클릭 켜기 activity.`

0

있는 경우 : 활동 B에서

btn_A.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Intent i=new Intent(A.this,B.class); 
     startActivity(i); 
     finish(); 
     } 
}); 

:

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 

    Intent i=new Intent(B.this,A.class); 
     startActivity(i); 
     finish(); 

}  
}