2016-07-14 4 views
0

タブレイアウトの素材デザインが初めてです。どのように毎回タブを選択した後にタブの位置を取得できますか?私は次のコードを使用しています。タブレイアウトでタブを選択するたびにタブ位置を取得する方法は?

tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       Toast.makeText(getApplicationContext(),"Pos onTabSelected: "+tab.getPosition(),Toast.LENGTH_SHORT).show(); 
      } 

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

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

このコードを使用すると、最初のタブ位置(1回のみ)を取得できます。私は毎回タブを選択した後にそのポジションを取得したい。

完全なコード:

package info.androidhive.materialtabs.activity; 

import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.List; 

import info.androidhive.materialtabs.R; 
import info.androidhive.materialtabs.fragments.OneFragment; 
import info.androidhive.materialtabs.fragments.ThreeFragment; 
import info.androidhive.materialtabs.fragments.TwoFragment; 

public class SimpleTabsActivity extends AppCompatActivity { 

    private Toolbar toolbar; 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 

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

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

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

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

     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       Toast.makeText(getApplicationContext(),"Pos onTabSelected: "+ tabLayout.getSelectedTabPosition(),Toast.LENGTH_SHORT).show(); 
      } 

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

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 
      } 
     }); 
     tabLayout.setupWithViewPager(viewPager); 
    } 

    private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     adapter.addFragment(new OneFragment(), "ONE"); 
     adapter.addFragment(new TwoFragment(), "TWO"); 
     adapter.addFragment(new ThreeFragment(), "THREE"); 
     viewPager.setAdapter(adapter); 
    } 

    class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragmentList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFragment(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 
    } 
} 
+0

これを試してください - > http://stackoverflow.com/questions/30758072/how-to-get-the-current-selected-item-position-using-tablayout-in-android-design –

答えて

1

tab.getPosition()は、現在選択しているタブの位置を取得するために使用されます。

tabLayout.setupWithViewPager(viewPager)setOnTabSelectedListenerを呼び出す前に、以下のコードを追加します。

正常に動作します。

+0

私は、活動のコード。ユーザーがタブを選択するたびにポジションを取得したいとします。たとえば、3つのタブがあります。One | Two | Three。1つまたは2つまたは3つを選択すると、Toastメッセージのタブの位置が表示されます。 –

+0

tabLayout.setupWithViewPager(viewPager)を呼び出す必要があります。 setOnTabSelectedListenerの前。私も答えを更新しました。 – Newbie

+0

@thanks jenson。それは働いている。 –

関連する問題