Fragment里的Tablayout

1.依赖

compile ‘com.github.andyoom:draggrid:v1.0.1’

2.主函数布局

<?xml version="1.0" encoding="utf-8"?>


<RadioGroup
    android:id="@+id/radio_group"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn1"
        android:layout_weight="1"
        android:text="首页"
        android:button="@null"
        android:gravity="center"
        />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn2"
        android:layout_weight="1"
        android:text="站点"
        android:button="@null"
        android:gravity="center"
        />
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn3"
        android:layout_weight="1"
        android:text="主题"
        android:button="@null"
        android:gravity="center"
        />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn4"
        android:layout_weight="1"
        android:text="发现"
        android:button="@null"
        android:gravity="center"
        />
</RadioGroup>

3.MainActivity

public class MainActivity extends AppCompatActivity {

private FrameLayout frame;
private RadioGroup radio_group;
private FragmentManager manager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    frame = findViewById(R.id.frame);
    radio_group = findViewById(R.id.radio_group);
    manager = getSupportFragmentManager();
    manager.beginTransaction().replace(R.id.frame,new Fragment01(),"haha").commit();
    radio_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            FragmentTransaction transaction = manager.beginTransaction();
            switch (checkedId){
                case R.id.btn1:
                    transaction.replace(R.id.frame,new Fragment01(),"haha");
                    break;
                case R.id.btn2:
                    transaction.replace(R.id.frame,new Fragment02());
                    break;

            }
            transaction.commit();
        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //重点
    Fragment haha = manager.findFragmentByTag("haha");
    Log.i("haha","aaa"+haha);
    haha.onActivityResult(requestCode,resultCode,data);
}

}

4.Fragment01里的布局tablayout和viewpager

<?xml version="1.0" encoding="utf-8"?>


    <android.support.design.widget.TabLayout
        android:id="@+id/tb"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1">

    </android.support.design.widget.TabLayout>

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="+"/>
</LinearLayout>
<android.support.v4.view.ViewPager
    android:id="@+id/vp"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"></android.support.v4.view.ViewPager>

5.Fragment01里的布局tablayout和viewpager

public class Fragment01 extends Fragment {
ArrayList channelBeans=new ArrayList<>();
ArrayList flist=new ArrayList<>();
private TabLayout tb;
private ViewPager vp;
private Button btn;
private MyFragmentAdapter fragmentAdapter;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment01, container, false);
    tb = view.findViewById(R.id.tb);
    vp = view.findViewById(R.id.vp);
    btn = view.findViewById(R.id.btn);

// initData();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),channelBeans);
}
});
return view;
}

private void initData() {
    channelBeans.add(new ChannelBean("热点",true));
    channelBeans.add(new ChannelBean("北京",true));
    channelBeans.add(new ChannelBean("推荐",true));
    channelBeans.add(new ChannelBean("游戏",false));
    channelBeans.add(new ChannelBean("健康",false));
    channelBeans.add(new ChannelBean("美女",false));
    channelBeans.add(new ChannelBean("搞笑",false));
    channelBeans.add(new ChannelBean("小说",false));
    for (int i = 0; i < channelBeans.size(); i++) {
        if (channelBeans.get(i).isSelect()){
            tb.addTab(tb.newTab().setText(channelBeans.get(i).getName()));
            if (i==0){
                flist.add(new Fragment03());
            }else if (i==1){
                flist.add(new Fragment02());
            }else{
                flist.add(new MFragment());
            }
        }
    }


    fragmentAdapter = new MyFragmentAdapter(getChildFragmentManager());
    vp.setAdapter(fragmentAdapter);
    tb.setupWithViewPager(vp);

}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
channelBeans.add(new ChannelBean(“热点”,true));
channelBeans.add(new ChannelBean(“北京”,true));
channelBeans.add(new ChannelBean(“推荐”,true));
channelBeans.add(new ChannelBean(“游戏”,false));
channelBeans.add(new ChannelBean(“健康”,false));
channelBeans.add(new ChannelBean(“美女”,false));
channelBeans.add(new ChannelBean(“搞笑”,false));
channelBeans.add(new ChannelBean(“小说”,false));
for (int i = 0; i < channelBeans.size(); i++) {
if (channelBeans.get(i).isSelect()){
tb.addTab(tb.newTab().setText(channelBeans.get(i).getName()));
if (i0){
flist.add(new Fragment03());
}else if (i
1){
flist.add(new Fragment02());
}else{
flist.add(new MFragment());
}
}
}

    fragmentAdapter = new MyFragmentAdapter(getChildFragmentManager());
    vp.setAdapter(fragmentAdapter);
    tb.setupWithViewPager(vp);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    String json = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
    Gson gson = new Gson();
    channelBeans=gson.fromJson(json,new TypeToken<ArrayList<ChannelBean>>(){}.getType());
    tb.removeAllTabs();
    flist.clear();
    for (int i = 0; i < channelBeans.size(); i++) {
        if (channelBeans.get(i).isSelect()){
            tb.addTab(tb.newTab().setText(channelBeans.get(i).getName()));
            if ("热点".equals(channelBeans.get(i).getName())){
                flist.add(new Fragment01());
            }else if ("北京".equals(channelBeans.get(i).getName())){
                flist.add(new Fragment02());
            }else{
                flist.add(new MFragment());
            }
        }
    }
fragmentAdapter.notifyDataSetChanged();

}

private class MyFragmentAdapter extends FragmentPagerAdapter {
    public MyFragmentAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        return flist.get(i);
    }

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

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return channelBeans.get(position).getName();
    }
}

}

6.MFragment

public class MFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView=new TextView(getActivity());
double random = Math.random();
textView.setText(“111111”+random);
return textView;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值