2011-09-21 50 views
0

是否有可能在不使用android 3.0片段的情况下显示选项卡?我已经创建了带有扩展片段的选项卡的actionbar。但是,如果不使用片段并通过扩展活动,我将能够显示选项卡。我需要实现该.pls help.I也发布了我的代码。是否有可能在android 3.0中不使用片段显示选项卡?

Java代码:

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

相关问题