2010-06-21 10 views
2

Android에서 TabHost 객체는 활동을 인라인 방식으로 렌더링합니다. 탭 호스트를 사용하지 않고 유사한 유형의 작업을 수행 할 수있는 방법이 있는지 궁금합니다. 내가 TabHost가하는 것과 같은 방식으로 활동 사이를 전환 할 수있는 툴바 또는 슬라이딩 서랍이 필요하다고 가정 해보십시오. 즉, 나는Android 인라인 활동

답변

0

은 기본적으로 당신은 LocalActivityManagerActvityGroup 클래스와 플레이해야합니다

하면 대시 보드 클래스가 있다고 가정 :

public class Dashboard extends ActivityGroup implements View.OnClickListener { 
    super.onCreate(savedInstanceState); 

    //Your view with the activity launcher buttons on the bottom for instance 
    setContentView(R.layout.frame); 

    @Override 
    public void onClick(View v) { 


     Intent intent = new Intent().setClassName(context,YourActivity.class); 

     intent.setAction(Intent.ACTION_VIEW); 


     LocalActivityManager localActivityManager = getLocalActivityManager(); 


     final Window w = localActivityManager.startActivity("uniqueID", intent); 
     final View wd = w != null ? w.getDecorView() : null; 

      //the content of your activity goes here 
     FrameLayout frameLayout = (FrameLayout) findViewById(R.id.tabcontent); 
     frameLayout.removeAllViews(); 
     frameLayout.addView(wd); 
    } 

} 
+0

이것은 매우 유망한 소리, 나는 그 소용돌이를 줄거야 그리고 어떻게 가는지 알려주 ... 감사합니다! – Ben

0

이 정확히 대신

... 개별 활동을로드하지만,되지 않을 수도 있습니다 ... 종류의 활동에 대한 iframe이 같은 다른 활동의 내부에 인라인 활동을 렌더링하고 싶습니다 하나의 활동 내에 레이아웃을 동적으로로드하여 사용자 관점에서 그 기능을 달성 할 수 있습니다. 그런 식으로 슬라이더를 사용하고 필요에 따라 화면에서 레이아웃을 업데이트 할 수 있습니다.

+0

네,하지만 내가 각보기에 대한 논리를 가지고해야 할 것이다. 내가 10 가지의 다른 뷰를 가지고 있다고 가정 해보자. 이제 갑자기 어느 레이아웃을 보여줄지와 모든 로직을 렌더링 할 것인지를 결정하는 커다란 switch 문을 가져야한다. 각자 자신의 활동에 넣는 것은 자신의 논리적 인 장소로 물건을 분리하는 좋은 방법이 될 것입니다 ... 기본적으로 TabHost가 작동하는 방식처럼 ... tabhost를 사용하지 않는 것만 제외하면 ... :) – Ben

+0

하하, 글쎄요. 가장 좋은 방법은 제공된 탭 컨테이너를 사용하여 앱을 일관된 모양과 느낌으로 유지하는 것입니다. TabHost를 사용할 수없는 이유가 있습니까? 아니면 대안을 창출하기위한 목적으로 TabHost에 대한 대안을 만들고 있습니까? –

+0

글쎄, 우리는 탭 뷰가있는 부동산을 감당할 필요없이 뷰를 '스 와이프'할 수 있기를 원합니다. – Ben

0

탭에서 활동을 사용하지 않거나 심지어보기를 권장하지 않습니다. 다른 검색을 할 수 있습니다 여기 또는 안드로이드 구글 그룹에 이유를 읽어보십시오.

별도의 액티비티가 필요하다면 인 텐트로 적절한 방법을 시작하고 안드로이드가 그들의 라이프 사이클을 관리하도록하거나 탭 당 뷰로 탭을해야합니다.