Android 如何添加选项卡&;动态碎片

Android 如何添加选项卡&;动态碎片,android,tabs,android-design-library,android-tablayout,androiddesignsupport,Android,Tabs,Android Design Library,Android Tablayout,Androiddesignsupport,如何动态添加选项卡和片段 我的代码: private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); for (int i = 0; i < 4; i++) { adapter.addFrag(new TabFragment(), "Tab"+i); }

如何动态添加选项卡和片段

我的代码:

    private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    for (int i = 0; i < 4; i++) {
    adapter.addFrag(new TabFragment(), "Tab"+i);
     }
    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 addFrag(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

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

假设我的选项卡名为“Tab1,Tab2,Tab3” 如果我在上面看到了,我如何根据数组动态添加选项卡,以及如何知道选择了哪个选项卡

欢迎提出任何建议

提前感谢:)


活动:
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
int icons[]={R.mipmap.createuser,R.mipmap.ico_密码,R.mipmap.gplus,R.mipmap.fb};
int colors[]={Color.YELLOW,Color.CYAN,Color.LTGRAY,Color.CYAN};
void initViews(){
TabLayout tabs=(TabLayout)findViewById(R.id.slideing_tabs);
ViewPager pager=(ViewPager)findViewById(R.id.ViewPager);
LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务);
ArrayList fragments=newArrayList(Arrays.asList(new Fragment1()、new Fragment2()、new Fragment3()、new Fragment4());
ViewPagerAdapter适配器=新的ViewPagerAdapter(getSupportFragmentManager(),片段);
寻呼机设置适配器(适配器);
选项卡。使用查看寻呼机(寻呼机)进行设置;
对于(int i=0;i<4;i++){
视图=充气机充气(右布局选项卡,空,假);
TextView title=(TextView)view.findViewById(R.id.title);
RelativeLayout=(RelativeLayout)view.findViewById(R.id.layout);
ImageView图标=(ImageView)view.findViewById(R.id.icon);
标题.setText(“制表符”+i);
布局.背景颜色(颜色[i]);
icon.setImageResource(icons[i]);
//tabs.getTabAt(i).setCustomView(视图);
tabs.getTabAt(i).setIcon(icons[i]);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
适配器:
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入java.util.List;
/**
*由rohit.h于2015年12月21日创建。
*/
公共类ViewPagerAdapter扩展了FragmentPagerAdapter{
字符串标题[]={“Tab1”、“Tab2”、“Tab3”、“Tab4”};
私人最终名单碎片;
public ViewPagerAdapter(碎片管理器fm,列出碎片){
超级(fm);
this.fragments=片段;
}
@凌驾
公共片段getItem(int位置){
返回碎片。获取(位置);
}
@凌驾
public int getCount(){
返回fragments.size();
}
@凌驾
公共字符序列getPageTitle(int位置){
返回标题[职位];
}
}

活动:
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
int icons[]={R.mipmap.createuser,R.mipmap.ico_密码,R.mipmap.gplus,R.mipmap.fb};
int colors[]={Color.YELLOW,Color.CYAN,Color.LTGRAY,Color.CYAN};
void initViews(){
TabLayout tabs=(TabLayout)findViewById(R.id.slideing_tabs);
ViewPager pager=(ViewPager)findViewById(R.id.ViewPager);
LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务);
ArrayList fragments=newArrayList(Arrays.asList(new Fragment1()、new Fragment2()、new Fragment3()、new Fragment4());
ViewPagerAdapter适配器=新的ViewPagerAdapter(getSupportFragmentManager(),片段);
寻呼机设置适配器(适配器);
选项卡。使用查看寻呼机(寻呼机)进行设置;
对于(int i=0;i<4;i++){
视图=充气机充气(右布局选项卡,空,假);
TextView title=(TextView)view.findViewById(R.id.title);
RelativeLayout=(RelativeLayout)view.findViewById(R.id.layout);
ImageView图标=(ImageView)view.findViewById(R.id.icon);
标题.setText(“制表符”+i);
布局.背景颜色(颜色[i]);
icon.setImageResource(icons[i]);
//tabs.getTabAt(i).setCustomView(视图);
tabs.getTabAt(i).setIcon(icons[i]);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
适配器:
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入java.util.List;
/**
*由rohit.h于2015年12月21日创建。
*/
公共类ViewPagerAdapter扩展
public class TabFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.activty_listview,container, false);
    listView = (ListView) rootView.findViewById(android.R.id.list);
    return rootView;
}

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

}
<RelativeLayout 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.design.widget.TabLayout
        android:id="@+id/sliding_tabs"
        android:layout_width="fill_parent"
        app:tabMode="fixed"
        android:background="#ff0000"
        app:tabGravity="fill"
        android:layout_height="48dp" />

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:layout_below="@+id/sliding_tabs"
        android:background="@android:color/white" />

</RelativeLayout>

Activity:


public class MainActivity extends AppCompatActivity {

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

    int icons[] = {R.mipmap.createuser, R.mipmap.ico_password, R.mipmap.gplus, R.mipmap.fb};
    int colors[] = {Color.YELLOW, Color.CYAN, Color.LTGRAY, Color.CYAN};

    void initViews() {
        TabLayout tabs = (TabLayout) findViewById(R.id.sliding_tabs);
        ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
        LayoutInflater inflator = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        ArrayList<Fragment> fragments = new ArrayList<>(Arrays.asList(new Fragment1(),new Fragment2(),new Fragment3(),new Fragment4()));

        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(),fragments);
        pager.setAdapter(adapter);
        tabs.setupWithViewPager(pager);
        for (int i = 0; i < 4; i++) {
            View view = inflator.inflate(R.layout.tabs,null,false);

            TextView title = (TextView)view.findViewById(R.id.title);
            RelativeLayout layout = (RelativeLayout)view.findViewById(R.id.layout);
            ImageView icon = (ImageView)view.findViewById(R.id.icon);
            title.setText("Tab" + i);
            layout.setBackgroundColor(colors[i]);
            icon.setImageResource(icons[i]);
           // tabs.getTabAt(i).setCustomView(view);
        tabs.getTabAt(i).setIcon(icons[i]);

        }

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

Adapter:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.List;

/**
 * Created by rohit.h on 12/21/2015.
 */
public class ViewPagerAdapter extends FragmentPagerAdapter {

    String titles[] = {"Tab1", "Tab2", "Tab3", "Tab4"};
    private final List<Fragment> fragments;

    public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

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

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

    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position];
    }
}
 mTabLayout = (TabLayout)rootView.findViewById(R.id.tab_layout);
        mTabLayout.addTab(mTabLayout.newTab().setText(getResources().getString(R.string.tab1)));
        mTabLayout.addTab(mTabLayout.newTab().setText(getResources().getString(R.string.tab2)));
        mTabLayout.addTab(mTabLayout.newTab().setText(getResources().getString(R.string.tab3)));
        mTabLayout.addTab(mTabLayout.newTab().setText(getResources().getString(R.string.tab4)));
        mTabLayout.addTab(mTabLayout.newTab().setText(getResources().getString(R.string.tab5)));
        mTabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);

        mViewPager = (ViewPager)rootView.findViewById(R.id.pager);

        mPagerAdapter = new PagerAdapter
                (getActivity().getSupportFragmentManager(), mTabLayout.getTabCount());

        mViewPager.setAdapter(mPagerAdapter);
        mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));