2016-08-19 3 views
0

I가 세 활성 A, C가android에서 특정 활동을 종료하는 방법은 무엇입니까?

finish(); 
Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

먼저 다음 HOME 화면을 호출 할 수있는 활성 인 B와 C는 활성 A는

Intent B_intent = new Intent(this, B.class); 
B_intent .putExtra("B_Activity", true); 
this.startActivity(B_intent); 

의해 액티비티 B를 호출 그런 다음 A에서 C 작업 (스레드를 사용하여 수행)을 호출 할 수도 있습니다. 내 문제는 내가 B를 다시 호출 할 때 B_Activity 클래스의 onCreate() 함수로 이동해야하므로 C 작업을 호출 할 때 B를 삭제/삭제하거나 완료 할 수있는 방법입니다. 이 함수를 사용하려고합니다

당신이 행위를 호출 할 때
if (getIntent().getBooleanExtra("B_Activity", false)) 
{ 
    finish(); 
} 

지금

B.this.finish(); 
Intent i = new Intent(B.this,C.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 

, 다음과 같이 활동 B를 파괴 할 의도를 통해 활동 C에 가기 전에 당신에게

답변

0
B.this.finish(); // it will destroys the activity B 

정말 고마워요 활동 A/C로부터의 B 활동은 B 활동의 onCreate()를 호출합니다. 모든

1) 먼저이 실행됩니다 B_Activity하는 당신이 C_Activity에서 돌아올 때 그래서 당신은 단순히 기능 B_Activity의 onResume() 메소드를 구현 :

+0

죄송합니다. B. C가 아니라 C의 활동을 C라고 부릅니다. 나 B.this.finish – Jame

+0

당신의 흐름을 정교하게 사용할 수 없습니까? 당신이 성취하고자하는 것을 정확히 얻지 못하고 있습니까? – Dnyanesh

+0

나는 A, B, C의 세 가지 활동이 있음을 의미합니다. A에서 B와 C를 호출 할 것입니다. 어떻게 C 액티비티를 호출하기 전에 B 액티비티를 완료 할 수 있습니까? C – Jame

1

나는 당신을 위해 3 개 솔루션을 가지고있다.

2) 난 강력하게 Fragments 당신이 같은 시나리오에 사용해야 무엇 좋습니다. 이제

public static void finishActivity(MainActivity mainActivity){ 
     if(mainActivity!=null) 
      mainActivity.finish(); 
    } 

전화 :

이 문제가 해결되지 않는 경우

3) 그런 다음 사용 사례를위한 최선의 방법은 정적 팩토리 메소드이 같은을 확인하는 것입니다

MainActivity.finishActivity(mainActivity); 

SecondActivity의 실행중인 인스턴스를 닫고 싶습니다. MainActivity의 인스턴스를 전달해야하며 시작하면 인스턴스를 가져올 수 있습니다.

희망이 도움이됩니다. 해피 코딩 :)

관련 문제