2012-07-19 5 views
0

다른 활동으로 이끌지 않는 탭이있는 패널이 포함 된 응용 프로그램을 보았습니다. TabHost + Fragment 요소가 사용되는 곳입니다.Tabhost + fragments

이 기능을 구현하는 데 귀하의 가정 /주의 사항/링크를 제공해주십시오.

답변

2

ViewPager를 사용할 수 있습니다. FragmentPagerAdapter를 구현하는

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

</RelativeLayout> 

는 ViewPager에 여러 개의 조각을로드하려면, 당신은 한 :

먼저 레이아웃에 ViewPager 포함 (당신은 이전 버전에 대한 호환성 패키지의 하나를 사용할 수 있습니다)

그런 다음
public class MyPagerAdapter extends FragmentPagerAdapter { 
    private Fragment fragment1; 
    private Fragment fragment2; 

    public ChartPagerAdapter(FragmentManager fm, Context context) { 
     super(fm); 
     fragment1 = new MyFragment(); 
     fragment2 = new MyFragment(); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       return fragment1; 
      case 1: 
       return fragment2; 

     } 
    } 

    @Override 
    public int getCount() { 
     return 2; 
    } 

    @Override 
    public String getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "Title 1"; 
      case 1: 
       return "Title 2"; 
     } 
    } 
} 

당신은 ViewPager에이 어댑터를 설정합니다

setContentView(R.layout.my_layout); 

    MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), MyActivity.this); 

    ViewPager pager = (ViewPager)findViewById(R.id.pager); 
    pager.setAdapter(adapter); 
+0

니스, 나는이 보지 못했지만 여기

은 내가 찾은 2 개 개의 좋은 링크가 있습니다 접근. 그렇다면 Tabhost + 파편보다 더 나은 이유는 무엇입니까? – user1462299

+0

낫지는 않지만 페이지간에 전환하는 아주 부드러운 방법 인 스 와이프 기능을 제공합니다. 또한 구현은 매우 엄격합니다. –

+0

위대한, 그게 내가 필요합니다. 감사합니다 – user1462299

0

당신은 TabActivity을 확장 할 수 있습니다,이 같은 :

public class NavigationBarActivity extends TabActivity (
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     setTabs(); 
    } 

    private void setTabs(){ 
     TabHost tabHost = getTabHost(); // The activity TabHost  
     TabHost.TabSpec spec;   // Reusable TabSpec for each tab  
     Intent intent;     // Reusable Intent for each tab 

     LayoutInflater inflater = getLayoutInflater(); 

     // tab 1------------------------------ 
     View tabView = inflater.inflate(R.layout.tab1, null, false); 
     ImageView tabImage = (ImageView)tabView.findViewById(R.id.tabImage); 
     TextView tabText = (TextView)tabView.findViewById(R.id.tabText); 

     // set icon 
     tabImage.setImageResource(R.drawable.tab1); 

     // set tab text 
     tabText.setText(R.string.tab1); 

     // Create an Intent to launch an Activity for the tab (to be reused)  
     intent = new Intent().setClass(this, Activity1.class);  
     // Initialize a TabSpec for each tab and add it to the TabHost 
     spec = tabHost.newTabSpec("ta1"); 
     spec.setIndicator(tabView); 
     spec.setContent(intent); 
     tabHost.addTab(spec); 

     // tab 2 ----------------------------------------- 
     tabView = inflater.inflate(R.layout.tab2, null, false); 
     tabImage = (ImageView)tabView.findViewById(R.id.tabImage); 
     tabText = (TextView)tabView.findViewById(R.id.tabText); 

     // set icon 
     tabImage.setImageResource(R.drawable.tab2); 

     // set tab text 
     tabText.setText(R.string.tab2); 

     intent = new Intent().setClass(this, ChatListActivity.class);  
     spec = tabHost.newTabSpec("tab2"); 
     spec.setIndicator(tabView);     
     spec.setContent(intent);  
     tabHost.addTab(spec); 

     tabHost.setOnTabChangedListener(this); 
    } 

    @Override 
    public void onTabChanged(String tabId) { 
     if(getTabHost().getCurrentTab() == 0) { 
      // WE are on tab1 ... 
     }  
    } 
} 
+2

TabActivity는 더 이상 사용되지 않습니다. 사용법은 권장하지 않습니다. –