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();
}
};
}