FrameLayout和频道管理+TabLayout

MainActivity布局文件

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/main_frag"
            ></FrameLayout>

        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:id="@+id/main_radio"
            >

            <RadioButton
                android:id="@+id/radioButton"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:button="@null"
                android:gravity="center"
                android:background="@drawable/radio_btn"
                android:text="首页" />

            <RadioButton
                android:id="@+id/radioButton2"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:button="@null"
                android:gravity="center"
                android:background="@drawable/radio_btn"
                android:text="视频" />

            <RadioButton
                android:id="@+id/radioButton3"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:button="@null"
                android:gravity="center"
                android:background="@drawable/radio_btn"
                android:text="我的" />
        </RadioGroup>


    </LinearLayout>

MainActivity代码:

public class MainActivity extends AppCompatActivity {

    private FragmentManager manager;

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

        manager = getSupportFragmentManager();
        final FragmentTransaction transaction = manager.beginTransaction();
        final Frag01 frag01 = new Frag01();
        final Frag02 frag02 = new Frag02();
        final Frag03 frag03 = new Frag03();
        transaction.add(R.id.main_frag,frag01,"frag01")
                    .add(R.id.main_frag,frag02)
                    .add(R.id.main_frag,frag03);

        transaction.show(frag01).hide(frag02).hide(frag03);
        transaction.commit();

        RadioGroup radioGroup =findViewById(R.id.main_radio);
        radioGroup.check(radioGroup.getChildAt(0).getId());
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                FragmentTransaction transaction2 = manager.beginTransaction();
                switch (checkedId){
                    case R.id.radioButton:
                        transaction2.show(frag01).hide(frag02).hide(frag03).commit();
                        break;
                    case R.id.radioButton2:
                        transaction2.show(frag02).hide(frag01).hide(frag03).commit();
                        break;
                    case R.id.radioButton3:
                        transaction2.show(frag03).hide(frag02).hide(frag01).commit();
                        break;
                }
            }
        });

    }

//重点
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Fragment fragment_01result = manager.findFragmentByTag("frag01");
        fragment_01result.onActivityResult(requestCode,requestCode,data);


    }
}

Fragmnet1的布局文件:

<LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
         >
         <android.support.design.widget.TabLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_weight="1"
              android:id="@+id/frag01_tab"
             />
         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="+"
             android:id="@+id/frag01_btn"
             />

     </LinearLayout>

    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/frag01_page"
        >


    </android.support.v4.view.ViewPager>

Fragmnet1的布代码:

public class Frag01 extends Fragment {

    private View view;
    private Button button;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    MypullAdapter adapter;
    ArrayList<ChannelBean> channelBeansList = new ArrayList<>();
    ArrayList<Fragment> fragmentArrayList = new ArrayList<>();


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.frag01,container,false);

        initview();
        initdata();


        return view;
    }

    private void initdata() {
        //添加数据
        channelBeansList.add(new ChannelBean("关注",true));
        channelBeansList.add(new ChannelBean("推荐",true));
        channelBeansList.add(new ChannelBean("热点",true));
        channelBeansList.add(new ChannelBean("十九大",false));
        channelBeansList.add(new ChannelBean("科技",false));
        channelBeansList.add(new ChannelBean("视频",false));
        channelBeansList.add(new ChannelBean("音乐 ",false));

        for (int i = 0; i <channelBeansList.size() ; i++) {
            if (channelBeansList.get(i).isSelect()){
                tabLayout.addTab(tabLayout.newTab().setText(channelBeansList.get(i).getName()));
                if (i==0){
                    fragmentArrayList.add(new TabFrag01());
                }else if (i==1){
                    fragmentArrayList.add(new TabFrag02());
                }else if (i==2){
                    fragmentArrayList.add(new TabFrag03());
                }else {
                    fragmentArrayList.add(new TabFrag04());
                }
            }

        }
        adapter.notifyDataSetChanged();
    }

    private void initview() {
        //获取资源id
        button = view.findViewById(R.id.frag01_btn);
        tabLayout = view.findViewById(R.id.frag01_tab);
        viewPager = view.findViewById(R.id.frag01_page);
       //适配器
        adapter = new MypullAdapter(getChildFragmentManager());
        viewPager.setAdapter(adapter);
        tabLayout.setupWithViewPager(viewPager);

        //点击添加
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),channelBeansList);
            }
        });

    }


    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        //返回来的频道管理封装在json中
        String extra = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
        Gson gson = new Gson();
        // 直接把数组转换成集合; 用TypeToken来转换;
        Type type = new TypeToken<ArrayList<ChannelBean>>(){}.getType();

        channelBeansList = gson.fromJson(extra,type);
        tabLayout.removeAllTabs(); // 清空tab
        fragmentArrayList.clear(); // 清空Fragment
        //重新添加tab和Fragment;
        for (int i = 0; i <channelBeansList.size() ; i++) {
            if (channelBeansList.get(i).isSelect()){
                tabLayout.addTab(tabLayout.newTab().setText(channelBeansList.get(i).getName()));
                if (i==0){
                    fragmentArrayList.add(new TabFrag01());
                }else if (i==1){
                    fragmentArrayList.add(new TabFrag02());
                }else if (i==2){
                    fragmentArrayList.add(new TabFrag03());
                }else {
                    fragmentArrayList.add(new TabFrag04());
                }
            }

        }
        adapter.notifyDataSetChanged();
    }


    //适配器
    public class  MypullAdapter extends FragmentPagerAdapter {


        public MypullAdapter(FragmentManager fm) {
            super(fm);
        }

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值