TabLayout和Bundle传值viewpage Fragment

来源:互联网 发布:视频压制软件 编辑:程序博客网 时间:2024/06/05 16:19

首先还是要导依赖包

compile 'com.android.support:design:26+'
然后在XML文件里,代码如下:

<android.support.design.widget.TabLayout    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/tab"    app:tabSelectedTextColor="@color/colorAccent"//这个表示标题默认滑动的颜色    ></android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="2"        android:id="@+id/vp"        ></android.support.v4.view.ViewPager>
在MainActivity的方法,代码如下:

    String[] chaans={"关注", "热点", "推荐", "北京", "娱乐", "体育", "教育", "科技", "历史", "地理", "视频"};  private TabLayout tab;  private ViewPager vp;List<Fragment> list=new ArrayList<>();  @Override  protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);      tab = findViewById(R.id.tab);      vp = findViewById(R.id.vp);      getData();      //设置Viewpage适配器     MypageAdapter my=new MypageAdapter(getSupportFragmentManager());     vp.setAdapter(my); //让子tablayout和Viewpage相关联     tab.setupWithViewPager(vp);     //设置显示的模式     tab.setTabMode(TabLayout.MODE_SCROLLABLE);  }  public void getData(){      for (int i = 0; i <chaans.length ; i++) {          //给Tablayout设置标题          tab.addTab(tab.newTab().setText(chaans[i]));      }      for (int i = 0; i <chaans.length ; i++) {          //实列化Fragment          Frag1 f1=new Frag1();          Bundle bu=new Bundle();          bu.putString("table",chaans[i]);          f1.setArguments(bu);          ///保存fragment,作为vp的pager页          list.add(f1);      }  }class MypageAdapter extends FragmentPagerAdapter{      public MypageAdapter(FragmentManager fm) {        super(fm);    }    @Override    public Fragment getItem(int position) {        return list.get(position);    }    @Override    public int getCount() {        return list.size();    }    @Override    public CharSequence getPageTitle(int position) {        return chaans[position];    }}在Fragment里的方法:
public class Frag1 extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        Bundle a = getArguments();        TextView te=new TextView(getActivity());        //给textView赋不同的值        te.setText(a.getString("table"));        return te;    }}