2016-08-05 3 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을 변경할 때 응답하지 않는다 뷰 페이지는 탭을 클릭해도 응답하지 않습니다. 나는 왜이 문제를 해결할 해결책을 찾을 수 없는지 모른다.

답변

1

탭 레이아웃에 탭 수신기를 추가하고 onPageChangeListener를 viewPager에 추가해야합니다. 이제 보통 ActionBar.TabListenerViewPager.OnPageChangeListener으로 이루어집니다. Creating Swipe Views with Tabs의 Android 도움말을 참조하십시오.

당신은

// 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) { 

      } 

     }); 
관련 문제