11

enter image description hereAndroid Actionbar Sherlock zakładkami

ja próby wykonania ActionBar Sherlocka w znajdujące się poniżej, że jak to pokazano w powyższym drucianej ramki.

Czy powinienem używać TabActivity? - odkąd widziałem, że jest przestarzałe. Który jest najlepszym sposobem na osiągnięcie tego samego.

+0

możesz podzielić się odpowiedzią –

Odpowiedz

25

I wdrożone tej funkcji z SherlockFragmentActivity jako pojemnik TabView iz SherlockFragment jako kartach. Oto szkic (pominąłem zwykłą działalnością Android rzeczy):

Jest to aktywność TabView z dwóch zakładek:

public class TabViewActivity extends SherlockFragmentActivity { 
    // store the active tab here 
    public static String ACTIVE_TAB = "activeTab"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    .. 
    final ActionBar actionBar = getSupportActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    // add the first tab which is an instance of TabFragment1 
    Tab tab1 = actionBar.newTab() 
       .setText("TabTitle1") 
       .setTabListener(new TabListener<TabFragment1>(
       this, "tab1", TabFragment1.class)); 
    actionBar.addTab(tab1); 

    // add the second tab which is an instance of TabFragment2 
    Tab tab2 = actionBar.newTab() 
      .setText("TabTitle2") 
      .setTabListener(new TabListener<TabFragment2>(
       this, "tab2", TabFragment2.class)); 
    actionBar.addTab(tab2); 

    // check if there is a saved state to select active tab 
    if(savedInstanceState != null){ 
     getSupportActionBar().setSelectedNavigationItem(
        savedInstanceState.getInt(ACTIVE_TAB)); 
    } 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
    // save active tab 
    outState.putInt(ACTIVE_TAB, 
      getSupportActionBar().getSelectedNavigationIndex()); 
    super.onSaveInstanceState(outState); 
    } 
} 

I to jest TabFragment że posiada zawartość kartę za:

public class TabFragment extends SherlockFragment { 
    // your member variables here 
    @Override 
    public View onCreateView(LayoutInflater inflater, 
       ViewGroup container, Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_va_esh, container, false); 
    ... // do your view initialization here 
    return view; 
    } 

} 

I wreszcie jest to TabListener który obsługuje przełączniki zakładka:

public class TabListener<T extends Fragment> implements ActionBar.TabListener{ 
    private TabFragment mFragment; 
    private final Activity mActivity; 
    private final String mTag; 
    private final Class<T> mClass; 

    public TabListener(Activity activity, String tag, Class<T> clz) { 
    mActivity = activity; 
    mTag = tag; 
    mClass = clz; 
    } 

    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    // Check if the fragment is already initialized 
    if (mFragment == null) { 
     // If not, instantiate and add it to the activity 
     mFragment = (TabFragment) Fragment.instantiate(
         mActivity, mClass.getName()); 
     mFragment.setProviderId(mTag); // id for event provider 
     ft.add(android.R.id.content, mFragment, mTag); 
    } else { 
     // If it exists, simply attach it in order to show it 
     ft.attach(mFragment); 
    } 

    } 

    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
    if (mFragment != null) { 
     // Detach the fragment, because another one is being attached 
     ft.detach(mFragment); 
    } 
    } 

    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
    // User selected the already selected tab. Usually do nothing. 
    } 
} 
+0

Jak dodać przycisk udostępniania na pasku akcji do pytania harsha mv.? –

+0

@suresh: To jest inny problem. Zobacz [to powiązane pytanie] (http://stackoverflow.com/q/10278952/620338). –

+0

@MattHandy Chcę dodać Tabulatory, a także ActionBar Iteams. więc czy rozwiązanie będzie działać? –

4

Wierzę, że TabActivity jest przestarzałe na korzyść korzystania z Fragmentów - nie dlatego, że nawigacja po kartach jest przestarzałą koncepcją. Po prostu użyj Fragments i TabWidget.

Również tutaj jest a similar question.

Edit:

Oto przykład dzięki uprzejmości Google: Android Tabs the Fragment Way

Powiązane problemy