2017-11-04 1 views
1

Ich kann auf die Registerkarten klicken, um zu ändern, aber nichts passiert, wenn ich wische. Ich sehe den farbigen Balken auch nicht unter dem ausgewählten Tab.Kann nicht zwischen Registerkarten in TabLayout wischen

Hier ist mein Code. Ich habe weitgehend this Tutorial gefolgt, aber ich habe geändert zu tabLayout.addOnTabSelectedListener(this) in StoriesActivity, weil der ehemalige depreceated ist.

StoriesActivity:

public class StoriesActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener { 

    //This is our tablayout 
    private TabLayout tabLayout; 

    //This is our viewPager 
    private ViewPager viewPager; 

    private Toolbar toolbar; 

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

     /* +++ START Intent +++ */ 
     Bundle extras = getIntent().getExtras(); 

     final int authorID = extras.getInt("author_id"); 
     final String authorName = extras.getString("author_name"); 
     Log.i("click", Integer.toString(authorID)); 
     /* +++ END Intent +++ */ 

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     toolbar.setTitle(authorName); 
     setSupportActionBar(toolbar); 

     toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       finish(); 
      } 
     }); 

     //Initializing the tablayout 
     tabLayout = (TabLayout) findViewById(R.id.tab_layout); 

     //Adding the tabs using addTab() method 
     tabLayout.addTab(tabLayout.newTab().setText("Stories")); 
     tabLayout.addTab(tabLayout.newTab().setText("Collections")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     //Initializing viewPager 
     viewPager = (ViewPager) findViewById(R.id.pager); 

     //Creating our pager adapter 
     StoriesTabsAdapter adapter = new StoriesTabsAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); 

     //Adding adapter to pager 
     viewPager.setAdapter(adapter); 
     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

     //Adding onTabSelectedListener to swipe views 
     tabLayout.addOnTabSelectedListener(this); 

    } 

    @Override 
    public void onTabSelected(TabLayout.Tab tab) { 
     viewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(TabLayout.Tab tab) { 

    } 

    @Override 
    public void onTabReselected(TabLayout.Tab tab) { 

    } 
} 

activity_stories.xml:

<RelativeLayout 
    android:id="@+id/main_layout" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:background="?attr/colorPrimary" 
     android:elevation="6dp" 
     android:minHeight="?attr/actionBarSize" 
     app:navigationIcon="?attr/homeAsUpIndicator" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/toolbar" 
     android:background="?attr/colorPrimary" 
     android:elevation="6dp" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/tab_layout"/> 

    <ListView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/stories_list_view" /> 

</RelativeLayout> 

StoriesTabsAdapter:

public class StoriesTabsAdapter extends FragmentPagerAdapter { 

    int mNumOfTabs; 

    public StoriesTabsAdapter(FragmentManager fm, int NumOfTabs) { 
     super(fm); 
     this.mNumOfTabs = NumOfTabs; 
    } 

    @Override 
    public Fragment getItem(int position) { 

     switch (position) { 
      case 0: 
       StoriesFragment tab1 = new StoriesFragment(); 
       return tab1; 
      case 1: 
       CollectionsFragment tab2 = new CollectionsFragment(); 
       return tab2; 
      default: 
       return null; 
     } 

    } 

    @Override 
    public int getCount() { 
     return mNumOfTabs; 
    } 

} 

StoriesFragment:

public class StoriesFragment extends Fragment { 

    public StoriesFragment() { 
     // Required empty public constructor 
    } 

    private ListView storiesListView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_stories, container, false); 
    } 

} 

Antwort

0

Sie sollten unter zwei Punkte folgen zu bewegen.

Wenn Sie eine ViewPager zusammen mit diesem Layout verwenden, können Sie setupWithViewPager (ViewPager) nennen sich die beiden miteinander zu verknüpfen. Dieses Layout wird automatisch von den Seitentiteln der PagerAdapter ausgefüllt.

Zweitens

_tablayoutOBJ.setupWithViewPager(_viewpagerOBJ); // After addOnTabSelectedListener . 

Denn Demo Fall können Sie Material Design working with Tabs besuchen.

+0

Vielen Dank für Ihre Antwort. Da es nur zwei Seiten gibt, warum sollte ich 'FragmentStatePagerAdapter' verwenden? – Sebastian

+0

@Sebastian Es ist aktualisiert. Lesen Sie https://StackOverflow.com/Questions/18747975/Difference-between-FragmentPageRadapter-and-FragmentStatePageRadapter –

+0

Ich verstehe immer noch nicht. Ich habe eine begrenzte Anzahl von Fragmenten, also passt 'FragmentPagerAdapter' am besten, oder? – Sebastian

2

Sie vermissen setupWithViewPager Ihr TabLayout.

mTabLayout.setupWithViewPager(mViewPager) 

das Problem des Textes In Bezug auf nicht zu sehen sein, versuchen Sie den Code unten gerade, nachdem Sie setupWithViewPager

 //Adding the tabs using addTab() method 
     tabLayout.addTab(tabLayout.newTab().setText("Stories")); 
     tabLayout.addTab(tabLayout.newTab().setText("Collections")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
+1

Vielen Dank für Ihre Antwort. Das Hinzufügen dieser Zeile nach 'tabLayout.addOnTabSelectedListener (this);' hat den Effekt, dass der Text von meinen Tabs entfernt wird. – Sebastian

+0

Versuchen Sie, was auf meinem Update erwähnt wurde, @Sebastian –

Verwandte Themen