2011-12-07 3 views
0

나는 메뉴가있는 헤더를 가지고 있으며 UI의 나머지 부분 만 변경할 수 있습니다. 즉, 헤더와 메뉴가 다시로드되지 않으며, 사용자가 선택할 때 컨텐트가 다시로드됩니다. 메뉴에서 옵션). 조각을 사용하여 UI의 일부 변경하기

******************************************* 
*    header     * 
******************************************* 
* option1 | option2 | option3 | option4...* 
******************************************* 
*           * 
*   content to be updated   * 
*   according to the option  * 
*   selected in the menu   * 
*           * 
*           * 
******************************************* 

은 내가 ViewFlipper를 사용하고 추가/컨텐츠에 대한 레이아웃을 제거하려고했지만, 나는 복잡한 내용을 위해이 조각을 사용하는 것이 더 좋을 수도 읽었습니다. 필자가 본 유일한 예는 TabHost 및 TabWidget을 사용하는 것이지만 TabWidget을 사용하지 않는 자체 메뉴가 있습니다.

각각의 메뉴 옵션에 대해 하나의 조각으로 ViewFlipper를 사용할 수 있습니까?

어떤 도움/제안/포인터 환영

...

감사

답변

0

실제로이 작업을 수행하기 위해 ViewFlipper 필요하지 않습니다.

Fragments에 관한 한 가지 점은 기존 Fragment를 대체 할 메소드를 호출하여 기존 Fragment를 다른 것으로 대체 할 수 있다는 것입니다. 이 방법은 선형 (선형), 상대 (상대) 중 선호하는 레이아웃을 사용하여 작동하지만 레이아웃과 완전히 단편으로 바꿉니다.

레이아웃 이름을 mainContent로 지정했다고 가정 해 보겠습니다. 위의 메뉴를 사용하여 기본 레이아웃 파일에 포함 된 LinearLayout입니다. 그런 다음 다음과 같은 방법을 사용하여에 (예를 들어, OptionOne을) 조각을 추가 할 수 있습니다 : 당신이 OptionTwo의 내용으로 교체 할 경우

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     ft.add(R.id.mainContent, new OptionOne()); 
     ft.commit(); 

을, 당신은 단순히이를 이용하여 교체 할 수 있습니다 :

FragmentTransaction ft = getActivity().getSupportFragmentManager() 
       .beginTransaction(); 
ft.replace(R.id.mainView, new Biography(appID, formID, title)) 
        .addToBackStack(null); 
ft.commit(); 

참고 : 코드가 다를 수 있으므로 이것을 위해 Fragments의 호환 버전을 사용했습니다. 또한이 방법을 사용하려면 현재 사용하려는 모든 활동을 Fragments으로 변경해야합니다.

관련 문제