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