2014-12-02 89 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