2010-12-02 4 views
0

activities, stacks and launch modes에 대해 읽었지 만,이 특정 정보를 내 특정 문제에 적용하는 방법을 이해하는 데 어려움이 있습니다.새로운 활동이 스택에있는 부모 대신 자리 잡게합니다.

기본적으로 내가하고 싶은 일은 새로운 활동을 시작하고 스택의 상단에 배치되는 것이 아니라 부모의 위치를 ​​스택에서 가져 오는 것입니다. 다음 두 가지 시나리오가 있습니다.

  1. 로그인 활동이 있습니다. 사용자가 로그인하면 새로운 활동이 시작됩니다. 사용자가 "back"을 누를 때, 나는 그를 login-activity로 되돌려 보내지 않고 프로그램을 빠져 나가기를 원한다.

  2. 나는 탭 호스트 (tabhost 내부의 framelayout)에 표시되는 활동이 있습니다. 이 활동에는 버튼이 있습니다.이 활동을 클릭하면 새로운 활동이 시작됩니다. 나는이 새로운 활동으로 인해 부모 자리를 차지하고 싶습니다. 즉, 새로운 전체 화면 액티비티를 열지 않고 대신 탭 호스트의 framelayout 내부에 부모 위치를 가져 오려고합니다. 또한, 나는 back-key에 대한 언론이 사용자를 부모 활동으로 되돌아 가게하는 것을 원하지 않는다.

누구든지 올바른 방향으로 나를 가리켜 주시면 감사하겠습니다. 미리 감사드립니다.

답변

0
  1. 로그인 활동에 finish() 만 전화하면됩니다. 그러면 활동 스택에서 제거됩니다.

  2. 이것은 더 어려운 대답입니다. 여기 내 최선의 제안은 ViewFlipper을 사용하고 새로운 Activity을 시작하는 대신보기를 전환 할 수 있습니다. 또는 버튼이 새로운 Activity을 시작해야하는 경우 ActivityGroup을 사용하고 Activity을 그런 식으로 관리 할 수 ​​있습니다. 그들은 둘 다 자신 만의 복잡성을 가지고 있기 때문에 어떤 것이 더 잘 작동하는지 조사해야합니다.

+0

고맙습니다. viewFLipper 및 ActivityGroups를 살펴보고 그 중 하나가 내 요구 사항에 적합한 지 확인합니다. – Jones

0

첫 번째 경우에는 로그인 활동에서 finish()를 호출해야합니다. 또한이 매니페스트 설정을 확인하여 새 작업이 시작될 때 작업을 완료하십시오. http://developer.android.com/guide/topics/manifest/activity-element.html#finish

두 번째 경우에는 두 개의보기를 프레임 또는 ViewFlipper로 사용할 수 있습니다. 그런 다음 뒤로 버튼 클릭을 처리하기 위해 키 이벤트를 덮어 씁니다. http://developer.android.com/reference/android/view/View.html#onKeyDown(int,android.view.KeyEvent) 두 번째보기에있을 때 사용자가 클릭했는지 확인하고 첫 번째보기를 표시하십시오. 첫 번째 뷰에있는 경우 시스템에서 이벤트를 처리하도록 덮어 쓰는 메서드에서 false를 반환 할 수 있습니다. [해당 활동을 종료했을 가능성이 높음]

또는 두 번째 옵션의 경우 탭을 제거하고 옵션 메뉴를 사용하는 것이 가능할 수도 있습니다. 이렇게하면 평소와 같이 활동을 사용할 수 있습니다.

관련 문제