2013-07-03 2 views
1

안녕하세요. 애플리케이션이 있습니다. A는 B 액티비티를 생성하는 런처 활동입니다. B에서 나는 B의 인스턴스를 삭제하지 않고 A로 돌아가고 싶습니다. 그래서 B의 새로운 인스턴스를 만들고 싶습니다. B2로 호출 할 수 있습니다. 그리고 A에서 나는 그들을 재창조하지 않고 B 나 B2를 보여줄 수 있기를 원합니다. 다시 B, B2는 동일한 클래스이며 다른 인스턴스라고 강조합니다. 내가 가고 싶은 경우 B에서기존의 android 액티비티를 시작합니다.

은 내가

를 사용하여 생각하지만 다른 인스턴스를 삭제하기 때문에 나는 그것의 실수라고 생각합니다. 어떤 경우에 사용해야합니까? 우리는 B.hide(); A.show()를 사용합니다. 그러면 우리가 할 수있는 것 A.hide(); B.SHOW() 또는 B1.show(); 안드로이드에서 어떻게 할 수 있습니까?

+1

디자인에 결함이 있습니다. 동일한 활동에 대해 2 개의 인스턴스를 생성하지 마십시오. 대신 인텐 트 추가 (또는 다른 메커니즘)를 사용하여 표시 할 데이터를 인스턴스에 전달하십시오. C# (Windows) 및 Android는 매우 다른 짐승입니다. – Simon

+0

몇 가지 정보를 제공해 드리고자합니다. 그것의 채팅 응용 프로그램. 그래서 A는 주요 활동이고, B, B1은 대화방입니다. 분명히 사용자가 chatrooms를 전환 할 수 있기를 원합니다. 그래서 사용자는 A에 들어가서 chatroom B에 들어간다. 그런 다음 그는 B1로 돌아가고 B를 닫지 않고 나중에 돌아올 수 있도록 B로 돌아 간다. 이 일을 캔틴? – user1855793

+0

그래서 ... 왜 다른 활동을 사용하여 다른 채팅 창을 표시 할 수 없었습니까? "_이 대화에 전환 _"이라고 말하면 마치 표시되는 데이터를 전환하는 것을 의미합니다. – jahroy

답변

0

B이 활동 인 경우 두 가지 인스턴스를 가질 수 없습니다.

동일한 클래스를 확장하는 2 개의 다른 활동을 가질 수 있지만 원하지 않는다고 표시했습니다.

새 인스턴스를 만드는 대신 B의 모양과 동작을 변경하는 방법을 찾아야합니다.

Activity Lifecycle에 대해 읽어 보시기 바랍니다.

0

해당 문서에서 사용 FLAG_ACTIVITY_REORDER_TO_FRONT

Context.startActivity에()에 전달 텐트에 설정하면

,이 플래그는 시작된 활동은 작업의 의 앞에 데려하게됩니다 이미 실행중인 경우 이력 스택.

+0

나는 android : launchMode = "singleTask"로 A를 가지고있다. 당신이 언급하는 깃발은 B에게 A (그것이 나던 창조물을 거쳐가는)를 위해 일합니다.하지만 A에게 돌아가는 것은 B로 돌아갑니다. 그것은 새로운 활동을 시작하고 창조물을 통과합니다. 나는 B의 B1 활동을 arraylist에 따라서 하나를 선택하고 그것을 열고 싶습니다 – user1855793

+0

@ user1855793 - 그것은 당신이 정말로 활동의 라이프 사이클에 맞서고있는 것처럼 들리 네요. 정말 나쁜 생각 같아. – jahroy

관련 문제