2010-07-16 3 views
15

앱을 만드는 개념화/디자인 단계에있어, 나는 약간의 걸림돌을 맞았습니다. 본질적으로 나는 하나의 활동을 TabHost/TabActivity와 비슷한 또 다른 UI에 임베드하는 방법을 찾고 있었다. 화면 상단에는 다른 활동이 포함될 창이 있으며 그 아래에는 위 활동과 독립적이며 항상 볼 수있는 버튼과 컨트롤이 있습니다. 사용자는 아래 컨트롤을 변경하지 않고 창에서 한 활동에서 다른 활동으로 이동할 수 있습니다.android : 액티비티 그룹을 사용하여 액티비티를 임베드

ActivityGroup 전체에서 문제가 발생했는데 유용하다고 생각되었지만 어떻게 구현합니까? 누구나 ActivityGroup에 경험이 있거나 다른 아이디어가 있습니까?

답변

19

예, 다른 활동의 컨테이너가 될 ActivityGroup을 구현할 것입니다. 사용자가 버튼 중 하나를 클릭하면 LocalActivityManager에 대한 참조를 얻고이를 사용하여 내부 액티비티를 시작하고 임베드합니다. 이런 식으로 뭔가 : 초점을 바로하지 않는 한, (메뉴 버튼과 같은) 하드웨어 버튼을 누르면에만 단지 대신 ActivityGroup에 이벤트를 트리거하기 때문에

LocalActivityManager mgr = getLocalActivityManager(); 

Intent i = new Intent(this, SomeActivity.class); 

Window w = mgr.startActivity("unique_per_activity_string", i); 
View wd = w != null ? w.getDecorView() : null; 

if(wd != null) { 
    mSomeContainer.addView(wd); 
} 

참고이 방법을 사용하는 것은 매우 복잡 할 수 내부 활동. 내부 액티비티를 컨테이너 뷰에 추가 한 후 내부 액티비티에 포커스를 맞추는 방법을 찾아야한다. 내부 액티비티에서 짝수가 발생하고 컨테이너 액티비티에 전파된다.

할 수 있습니다. 나는 해냈습니다 ... 작동합니다. 내가 생각하는 것보다 조금 더 복잡합니다.

어쨌든, 난

+0

오, 위대한 tabhost 소스 코드를 찾고있었습니다. 이것은 좋아 보인다. 그러나 그 모두는 나에게 매우 새롭다. 코드 예제에서 수행중인 작업에 대해 설명해 주시겠습니까? – mtmurdock

+1

startActivity 부분은 화면에 표시하지 않고 활동을 시작합니다. 그런 다음 모든 내용을 가진보기를 가져 와서 ActivityGroup 안에있는보기에 추가하십시오. LocalActivityManager는 집 버튼을 누를 때 내부 활동에 onPause 및 onResume을 보내는 것과 같은 또 다른 사항을 – synic

+0

: "창"객체 란 무엇이며 어떻게 구현합니까? 나는 그냥 레이아웃에'' 태그를 넣고 코드에서 그것을 할당 할 수 있습니까? 추신 : 고마워요, 넌 대단해. – mtmurdock

관련 문제