diff --git a/app/src/main/java/cc/niushuai/dididone/ui/statistic/MyFragment.java b/app/src/main/java/cc/niushuai/dididone/ui/statistic/MyFragment.java new file mode 100644 index 0000000..156b335 --- /dev/null +++ b/app/src/main/java/cc/niushuai/dididone/ui/statistic/MyFragment.java @@ -0,0 +1,38 @@ +package cc.niushuai.dididone.ui.statistic; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.fragment.app.Fragment; + +import cc.niushuai.dididone.R; + +/** + * Created by Administrator on 2016/7/8. + */ +public class MyFragment extends Fragment { + + private TextView tv; + private String name; + + public MyFragment(String fName) { + this.name = fName; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_test, container, false); + tv = (TextView) view.findViewById(R.id.fragment_tv); + tv.setText(name); + tv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + tv.setText("我变了-" + name); + } + }); + return view; + } +} \ No newline at end of file diff --git a/app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java b/app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java index 48c212e..237f7d1 100644 --- a/app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java +++ b/app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java @@ -6,30 +6,23 @@ import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; import androidx.lifecycle.ViewModelProvider; -import androidx.viewpager.widget.ViewPager; - -import com.google.android.material.tabs.TabLayout; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; +import cc.niushuai.dididone.R; import cc.niushuai.dididone.databinding.FragmentStatisticBinding; import cc.niushuai.dididone.ui.base.BaseFragment; -import cc.niushuai.dididone.ui.statistic.charts.BaseChartFragment; -import cc.niushuai.dididone.ui.statistic.charts.ListFragment; -import cc.niushuai.dididone.ui.statistic.charts.MonthFragment; -import cc.niushuai.dididone.ui.statistic.charts.OtherFragment; -import cc.niushuai.dididone.ui.statistic.charts.WeekFragment; import cc.niushuai.dididone.util.XLog; -public class StatisticFragment extends BaseFragment { +public class StatisticFragment extends BaseFragment implements View.OnClickListener { private FragmentStatisticBinding binding; - private List fragments = new ArrayList<>(4);; + + //三个fragment + private MyFragment f1; + private MyFragment f2; + private MyFragment f3; + private MyFragment f4; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -40,38 +33,136 @@ public class StatisticFragment extends BaseFragment { binding = FragmentStatisticBinding.inflate(inflater, container, false); View root = binding.getRoot(); - ViewPager viewPager = binding.statViewpager; -// SlidingTabLayout tabLayout = binding.statTabLayout; - TabLayout tabLayout = binding.statTabLayout; + return root; + } + + @Override + public void init() { + initFragment1(); + } + + @Override + public void setListeners() { + binding.btn1.setOnClickListener(this); + binding.btn2.setOnClickListener(this); + binding.btn3.setOnClickListener(this); + binding.btn4.setOnClickListener(this); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } + + //显示第一个fragment + private void initFragment1() { + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); + + //第一种方式(add),初始化fragment并添加到事务中,如果为null就new一个 + if (f1 == null) { + f1 = new MyFragment("消息"); + transaction.add(R.id.main_frame_layout, f1); + } + //隐藏所有fragment + hideFragment(transaction); + //显示需要显示的fragment + transaction.show(f1); + + //第二种方式(replace),初始化fragment +// if(f1 == null){ +// f1 = new MyFragment("消息"); +// } +// transaction.replace(R.id.main_frame_layout, f1); + + //提交事务 + transaction.commit(); + } + + //显示第二个fragment + private void initFragment2() { + FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); - // 初始化所有的fragment - if (fragments.isEmpty()) { - fragments.add(new ListFragment()); - fragments.add(new WeekFragment()); - fragments.add(new MonthFragment()); - fragments.add(new OtherFragment()); + if (f2 == null) { + f2 = new MyFragment("联系人"); + transaction.add(R.id.main_frame_layout, f2); } + hideFragment(transaction); + transaction.show(f2); + +// if(f2 == null) { +// f2 = new MyFragment("联系人"); +// } +// transaction.replace(R.id.main_frame_layout, f2); - viewPager.setOffscreenPageLimit(1); + transaction.commit(); + } - MyPagerAdapter adapter = new MyPagerAdapter(getActivity().getSupportFragmentManager(), fragments); - //绑定adapter - viewPager.setAdapter(adapter); - //绑定viewPager - List titles = fragments.stream().map(BaseChartFragment::getTitle).collect(Collectors.toList()); - tabLayout.setupWithViewPager(viewPager); + //显示第三个fragment + private void initFragment3() { + FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); - //设置标题 - for (int i = 0; i < titles.size(); i++) { - tabLayout.getTabAt(i).setText(titles.get(i)); + if (f3 == null) { + f3 = new MyFragment("动态"); + transaction.add(R.id.main_frame_layout, f3); } + hideFragment(transaction); + transaction.show(f3); - return root; +// if(f3 == null) { +// f3 = new MyFragment("动态"); +// } +// transaction.replace(R.id.main_frame_layout, f3); + + transaction.commit(); + } + + //显示第三个fragment + private void initFragment4() { + FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); + + if (f4 == null) { + f4 = new MyFragment("其他"); + transaction.add(R.id.main_frame_layout, f4); + } + hideFragment(transaction); + transaction.show(f4); + +// if(f3 == null) { +// f3 = new MyFragment("动态"); +// } +// transaction.replace(R.id.main_frame_layout, f3); + + transaction.commit(); + } + + //隐藏所有的fragment + private void hideFragment(FragmentTransaction transaction) { + if (f1 != null) { + transaction.hide(f1); + } + if (f2 != null) { + transaction.hide(f2); + } + if (f3 != null) { + transaction.hide(f3); + } + if (f4 != null) { + transaction.hide(f4); + } } @Override - public void onDestroyView() { - super.onDestroyView(); - binding = null; + public void onClick(View v) { + if (v == binding.btn1) { + initFragment1(); + } else if (v == binding.btn2) { + initFragment2(); + } else if (v == binding.btn3) { + initFragment3(); + } else if (v == binding.btn4) { + initFragment4(); + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_statistic.xml b/app/src/main/res/layout/fragment_statistic.xml index cc9e38c..d2537d7 100644 --- a/app/src/main/res/layout/fragment_statistic.xml +++ b/app/src/main/res/layout/fragment_statistic.xml @@ -1,38 +1,52 @@ + - - - + android:layout_height="48dp"> + +