2012-09-18 5 views
0

이 질문에 도움을주세요. 예제 Activity 클래스 MyActivity가 있습니다. 이 Activity를 시작하고이 인스턴스를 "Home"이라고합니다. 이 작업에는 세 개의 버튼이 있습니다. 호출 : Button1, Button2, Button3. 하나의 버튼을 클릭하면 MyActivity의 다른 인스턴스가 시작됩니다. 이렇게 할 수 있을까요 :하나의 활동 클래스에서 제어 활동 인스턴스

Button1 시작 A1을 클릭하고 Button2 시작 A2를 클릭 한 다음 Button3 시작 A3를 클릭하십시오. 우리는 다음과 같은 활동 스택을 갖게 될 것입니다. home -> A1 -> A2 -> A3. 활동 A3에서 (MyActivity의 인스턴스). Button1을 클릭하면 새 것을 만들지 않고 A1을 앞쪽으로 옮길 수 있습니까? 그럴 수 있을지 궁금합니다.

답변

1

A1, A2 및 A3이 모두 MyActivity 인 경우 Android 앞에 MyActivity의 인스턴스를 가져올 방법이 없기 때문에이 작업을 수행 할 수 없습니다. 당신이 MyActivity에서 파생 각각 3 개 새로운 활동 (A1, A2A3)를 작성하는 경우

그러나, 당신은 이러한 활동을 시작할 때 플래그 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT를 설정하여이 작업을 수행 할 수 있습니다.

매니페스트에는 네 가지 활동 (MyActivity, A1, A2, A3)이 모두 필요합니다.

당신은 다음과 같이해야합니다 :

public class A1 extends MyActivity { 
} 

public class A2 extends MyActivity { 
} 

public class A3 extends MyActivity { 
} 

MyActivity에서 온 클릭 '에서()를 when you start an activity (either A1 , A2 or A3`이 같은 그것을 할) : 전에

Intent intent = new Intent(this, A1.class); // or A2 or A3 
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(intent); 
+0

고마워. @ 데이비드 와서. 나는이 질문을 한 후에이 해결책에 대해 생각해 보았다. 어쩌면 이것이 유일한 방법 일 수 있습니다. – gZerone

0

새로운 활동을 시작하고이 깃발을 사용해 당신과 함께 사용해보십시오.

intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
+0

여기에서 가장 큰 문제는 A1, A2, A3은 MyActivity 클래스의 인스턴스입니다. 그래서 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT를 사용할 수 없습니다. – gZerone