2011-09-21 8 views
0

android 3.0에서 조각을 사용하지 않고 탭을 표시 할 수 있습니까? 조각을 확장하는 탭이있는 작업 표시 줄을 만들었습니다. 단편을 사용하지 않고 작업을 확장하지 않으면 탭을 표시 할 수 있습니다. 그 .pls 도움말을 얻으려고합니다 .I 내 코드도 게시했습니다.android 3.0에서 조각을 사용하지 않고 탭을 표시 할 수 있습니까?

자바 코드 :

public class ActionbarActivity extends Activity { 
    ActionBar bar; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ActionBar bar = getActionBar(); 

     bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     ActionBar.Tab tabA = bar.newTab().setText("Home"); 
     ActionBar.Tab tabB = bar.newTab().setText("Listings"); 
     ActionBar.Tab tabC = bar.newTab().setText("Remote"); 
     Fragment fragmentA = new ATab(); 
     Fragment fragmentB = new BTab(); 
     Fragment fragmentC = new CTab(); 
     bar.setDisplayShowHomeEnabled(true); 
     tabA.setTabListener(new MyTabsListener(fragmentA)); 
     tabB.setTabListener(new MyTabsListener(fragmentB)); 
     tabC.setTabListener(new MyTabsListener(fragmentC)); 
     bar.addTab(tabA); 
     bar.addTab(tabB); 
     bar.addTab(tabC); 

    } 

    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.option, menu); 

     return true; 
    } 

    protected class MyTabsListener implements ActionBar.TabListener { 
     private Fragment mfragment; 

     public MyTabsListener(Fragment fragment) { 
      this.mfragment = fragment; 

     } 


     @Override 
     public void onTabSelected(Tab tab, FragmentTransaction ft) { 
      ft.add(R.id.fragment_place, mfragment, null); 

     } 

     @Override 
     public void onTabReselected(Tab tab, FragmentTransaction ft) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
      // TODO Auto-generated method stub 
      ft.remove(mfragment); 

     } 
    } 
} 




public class ATab extends Fragment 

    { 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) 
    { 
    return inflater.inflate(R.layout.atab, container, false); 
    } 
    } 




public class BTab extends Fragment 

{ 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) 
{ 
return inflater.inflate(R.layout.btab, container, false); 
} 
} 





public class CTab extends Fragment 

{ 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) 
{ 
return inflater.inflate(R.layout.ctab, container, false); 
} 
} 

xml.code :

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

    <LinearLayout android:layout_height="wrap_content" 
android:layout_width="match_parent" 
android:id="@+id/fragment_place"></LinearLayout>  



</RelativeLayout> 

답변

13

당신은 탭을 사용하는 조각을 사용하지 않아도 내가 성공적 중 하나에 이런 짓을했습니다 내 애플 리케이션, 그냥 탭 선택에 콘텐츠를 변경.

public class Main extends Activity implements ActionBar.TabListener { 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     mDisplayMode = settings.getInt("displayMode", 0); 

     ActionBar bar = getActionBar(); 

     bar.addTab(bar.newTab().setText("Decimal").setTabListener(this)); 
     bar.addTab(bar.newTab().setText("Hexadecimal").setTabListener(this)); 

     bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     bar.selectTab(bar.getTabAt(mDisplayMode)); 
     // Other code 
} 

public void onTabSelected(Tab tab, FragmentTransaction ft) { 

     mDisplayMode = tab.getPosition(); 

     // Do stuff based on new tab selected 

    } 


public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
    // Do Nothing 

} 

public void onTabReselected(Tab tab, FragmentTransaction ft) { 
    // Do nothing 

} 

// .. 

} 
+0

감사합니다. – preeti

+1

당신과 당신의 평판을 구축 할 수있는 해결책을 찾으면이 대답을 받아 들일 수 있도록 표시해주십시오. – CodeChimp

관련 문제