2014-12-02 92 views
3

我想有兩個選項卡在片段之間導航,我用舊方法做了它,但現在使用API​​ 21,所有方法都被棄用。我搜索了很多,但我沒有找到任何教程或示例。我嘗試了Google的SlidingTabs示例,但它不是爲Eclipse構建的,因此我不知道如何將它集成到我的應用程序中。有人能幫我嗎?也許給我一個鏈接到一個基本的教程?謝謝!API 21滑動選項卡活動

回答

0

如果你正在談論,而不是一個NavigationDrawer類型的事情ViewPager,它繼續在API-21很好地工作。

查看IOSched application's code查看「Google Play」,例如ViewPager指標。

EDIT

setNavigationMode被棄用的方法和作爲UI/UX圖案。

the official documentation

This method was deprecated in API level 21. 
Action bar navigation modes are deprecated and not supported by inline toolbar action bars. 
Consider using other common navigation patterns instead. 

哪個環節common navigation patterns

EDIT2

固定iosched應​​用程序代碼鏈接。

+0

它的作品,但方法已被棄用。 – BlueMango 2014-12-02 20:50:33

+0

我實現了它,沒有任何棄用在我身邊。請明確說明。 – shkschneider 2014-12-03 09:06:18

+0

我嘗試使用ViewPager,但setNavigationMode已棄用。 – BlueMango 2014-12-03 14:56:44

1

檢查this出來,它可以幫助你,這是通過片段

+0

我不想使用外部庫,我想以正確方式使用Android小部件... – BlueMango 2014-12-02 20:50:02

1

的導航非常出色菜單隻需導入那些2類:SlidingTabStripSlidingTabLayout在您的項目在你的應用程序選項卡。你可以看看示例項目,看看它是如何使用的。

非常簡單易用。首先在你的項目和你的xml佈局(my_layout.xml)中導入這兩個類,添加SlidingTabLayout。我還添加了如果你想用ViewPager使用它viewPager:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"  
    android:orientation="vertical" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    tools:context="MyActivity"> 

     <SlidingTabLayout 
      android:id="@+id/sliding_tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

    <android.support.v4.view.ViewPager 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/my_pager" /> 

</LinearLayout> 

在您的活動,

public class MyActivity extends ActionBarActivity { 
     private SlidingTabLayout slidingTabLayout; 
     private ViewPager viewPager; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.my_layout);   

     viewPager = (ViewPager) findViewById(R.id.my_pager); 
     viewPager.setAdapter(new MyAdapter(getSupportFragmentManager())); 

     slidingTabLayout = (SlidingTabLayout)findViewById(R.id.sliding_tabs); 
     slidingTabLayout.setViewPager(viewPager); 
    } 
} 

然後你可以定義你的適配器,將添加到SlidingTabLayout。例如:

public static class MyAdapter extends FragmentPagerAdapter { 
    private static final int FRAGMENT_1 = 0; 
    private static final int FRAGMENT_2 = 1; 
    private static final int FRAGMENT_3 = 2; 

    public MyAdapter (FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int i) { 
     switch (i){ 
      case FRAGMENT_1 : return new Fragment1(); 
      case FRAGMENT_2 : return new Fragment2(); 
      case FRAGMENT_3 : return new Fragment3(); 
     } 
     return null; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position){ 
      case FRAGMENT_1 : return "Fragment 1 Title"; 
      case FRAGMENT_2 : return "Fragment 2 title"; 
      case FRAGMENT_3 : return "Fragment 3 Title"; 
     } 
     return super.getPageTitle(position); 
    } 

    @Override 
    public int getCount() { 
     return 3; 
    } 
} 
+0

我得到一個錯誤:Fragment1()無法解析...我必須做什麼? btw感謝您的幫助! – BlueMango 2014-12-02 21:05:03

+0

用您的應用程序片段替換片段1,2和3。他們在這裏只是一個例子 – Dimitri 2014-12-02 22:16:24

+0

我做到了,但是我的應用程序在啓動時崩潰,這是錯誤:12-02 22:23:52.400:E/AndroidRuntime(15558):引起:android.view.InflateException:Binary XML文件行#7:錯誤膨脹類SlidingTabLayout – BlueMango 2014-12-02 22:22:59