2016-08-05 2 views
1

это моя активностьViewPager не отвечает на вкладке нажмите

public class MainActivity extends AppCompatActivity { 
    private ViewPager viewPager; 
    private TabLayout tablayout; 
    private int[] tableIcons = {android.R.drawable.ic_menu_camera, 
     android.R.drawable.ic_menu_add, android.R.drawable.ic_media_next}; 

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

     viewPager = (ViewPager) findViewById(R.id.viewpager); 

     tablayout = (TabLayout) findViewById(R.id.tab); 
     setUpwithviewpager(viewPager); 
     tablayout.setupWithViewPager(viewPager); 
     tablayout.getTabAt(0).setIcon(tableIcons[0]); 
     tablayout.getTabAt(1).setIcon(tableIcons[1]); 
     tablayout.getTabAt(2).setIcon(tableIcons[2]); 
     tablayout.setTabMode(TabLayout.MODE_FIXED); 
    } 

    public void setUpwithviewpager(ViewPager viewpager) { 
     ViewPageradapter adapter = new  ViewPageradapter(getSupportFragmentManager()); 
     adapter.addFragment(OneFragment.newInstance("1"), "one"); 
     adapter.addFragment(TwoFragment.newInstance("2"), "two"); 
     adapter.addFragment(ThreeFragment.newInstance("3"), "three"); 
     viewpager.setAdapter(adapter); 
    } 
} 

это расположение XML-файл

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">  
    </android.support.design.widget.AppBarLayout> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tab" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabGravity="fill" 
     app:tabMode="fixed"></android.support.design.widget.TabLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"></android.support.v4.view.ViewPager></android.support.design.widget.CoordinatorLayout> 

Мой tablayout не реагирует, когда я изменить ViewPager, и viewpager также не отвечает, когда я нажимаю на вкладки. Я не знаю, почему, я не могу найти решение для решения этой проблемы.

ответ

1

Вам нужно добавить вкладку-вкладку в макет вкладки и функцию onPageChangeListener в viewPager. Обычно это делается с ActionBar.TabListener и ViewPager.OnPageChangeListener. См. Статью Android на странице Creating Swipe Views with Tabs.

Вы должны иметь что-то вроде

// Create a tab listener that is called when the user changes tabs. 
ActionBar.TabListener tabListener = new ActionBar.TabListener() { 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
     // When the tab is selected, switch to the 
     // corresponding page in the ViewPager. 
     viewpager.setCurrentItem(tab.getPosition()); 
    } 

и

viewpager = (ViewPager) findViewById(R.id.pager); 
viewpager.setOnPageChangeListener(
     new ViewPager.SimpleOnPageChangeListener() { 
      @Override 
      public void onPageSelected(int position) { 
       // When swiping between pages, select the 
       // corresponding tab. 
       getActionBar().setSelectedNavigationItem(position); 
      } 
     }); 
1

Попробуйте с ниже код:

viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @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) { 

      } 

     }); 
Смежные вопросы