From 2a6c0d9a93923f852a90f9f53f5e75985ad5bf73 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期四, 14 十二月 2023 09:52:10 +0800 Subject: [PATCH] 2023年12月14日09:51:57 --- app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java | 129 +++++++++++++++++++++++++++++++++++------- 1 files changed, 107 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java index 28da26e..cf8f595 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java @@ -1,9 +1,15 @@ package com.hdl.photovoltaic.ui.message; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.view.View; + +import androidx.annotation.RequiresApi; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseFragment; @@ -14,12 +20,25 @@ import org.greenrobot.eventbus.EventBus; +import java.util.ArrayList; +import java.util.List; + /** * 娑堟伅 */ public class MessageFragment extends CustomBaseFragment { private FragmentMessageBinding viewBinding; + + //褰撳墠鏄剧ず鐨刦ragment + private static final String CURRENT_FRAGMENT = "state_fragment_show"; + private FragmentManager mFragmentManager; + private Fragment currentFragment = new Fragment(); + private List<Fragment> fragments = new ArrayList<>(); + private int currentIndex = 0; + private AllMessageFragment mAllMessageFragment; + private NascentMessageFragment mNascentMessageFragment; + private RecoverMessageFragment mRecoverMessageFragment; @Override public Object getContentView() { @@ -30,6 +49,7 @@ @Override public void onBindView(Bundle savedInstanceState) { + initFragment(savedInstanceState); //鍒濆鍖栫晫闈� initView(); //鍒濆鍖栫洃鍚櫒 @@ -49,9 +69,7 @@ viewBinding.line1V.setVisibility(View.VISIBLE); viewBinding.line2V.setVisibility(View.GONE); viewBinding.line3V.setVisibility(View.GONE); - viewBinding.messageAllFcv.setVisibility(View.VISIBLE); - viewBinding.messageNascentFcv.setVisibility(View.GONE); - viewBinding.messageRecoverFcv.setVisibility(View.GONE); + showFragment(0); postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.all); } @@ -66,9 +84,7 @@ viewBinding.line1V.setVisibility(View.GONE); viewBinding.line2V.setVisibility(View.VISIBLE); viewBinding.line3V.setVisibility(View.GONE); - viewBinding.messageAllFcv.setVisibility(View.GONE); - viewBinding.messageNascentFcv.setVisibility(View.VISIBLE); - viewBinding.messageRecoverFcv.setVisibility(View.GONE); + showFragment(1); postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.nascent); } }); @@ -82,9 +98,7 @@ viewBinding.line1V.setVisibility(View.GONE); viewBinding.line2V.setVisibility(View.GONE); viewBinding.line3V.setVisibility(View.VISIBLE); - viewBinding.messageAllFcv.setVisibility(View.GONE); - viewBinding.messageNascentFcv.setVisibility(View.GONE); - viewBinding.messageRecoverFcv.setVisibility(View.VISIBLE); + showFragment(2); postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.recover); } }); @@ -98,10 +112,13 @@ viewBinding.line1V.setVisibility(View.VISIBLE); viewBinding.line2V.setVisibility(View.GONE); viewBinding.line3V.setVisibility(View.GONE); - viewBinding.messageAllFcv.setVisibility(View.VISIBLE); - viewBinding.messageNascentFcv.setVisibility(View.GONE); - viewBinding.messageRecoverFcv.setVisibility(View.GONE); - postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.all); + if (this.currentIndex == 0) { + postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.all); + } else if (this.currentIndex == 1) { + postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.nascent); + } else if (this.currentIndex == 2) { + postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.recover); + } } private void initData() { @@ -120,17 +137,85 @@ } - @Override - public void onResume() { - super.onResume(); - - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - viewBinding.messageAllFcv.setVisibility(View.VISIBLE); + /** + * 鍒濆鍖朏ragment + * + * @param savedInstanceState - + */ + private void initFragment(Bundle savedInstanceState) { + mFragmentManager = _mActivity.getSupportFragmentManager(); + //纰庣墖鍐呴渶瑕佷娇鐢ㄦ潈闄愬拰forresult + mAllMessageFragment = new AllMessageFragment(); + mNascentMessageFragment = new NascentMessageFragment(); + mRecoverMessageFragment = new RecoverMessageFragment(); + if (savedInstanceState != null) { + //鈥滃唴瀛橀噸鍚�濇椂璋冪敤 鑾峰彇鈥滃唴瀛橀噸鍚�濇椂淇濆瓨鐨勭储寮曚笅鏍� + currentIndex = savedInstanceState.getInt(CURRENT_FRAGMENT, 0); + if (fragments.size() != 0) { + fragments.clear(); } - },2000L); + fragments.add(mFragmentManager.findFragmentByTag(0 + "")); + fragments.add(mFragmentManager.findFragmentByTag(1 + "")); + fragments.add(mFragmentManager.findFragmentByTag(2 + "")); + restoreFragment();//鎭㈠fragment椤甸潰 + } else { + //姝e父鍚姩鏃惰皟鐢� + fragments.add(mAllMessageFragment); + fragments.add(mNascentMessageFragment); + fragments.add(mRecoverMessageFragment); + showFragment(); + + } } + + /** + * 鍒囨崲Fragment + * + * @param index 绱㈠紩 + */ + private void showFragment(int index) { + currentIndex = index; + showFragment(); + } + + /** + * 浣跨敤show() hide()鍒囨崲椤甸潰 + * 鏄剧ずfragment + */ + private void showFragment() { + FragmentTransaction ft = mFragmentManager.beginTransaction(); + //濡傛灉涔嬪墠娌℃湁娣诲姞杩� + if (!fragments.get(currentIndex).isAdded()) { + //绗笁涓弬鏁颁负娣诲姞褰撳墠鐨刦ragment鏃剁粦瀹氫竴涓猼ag + ft.hide(currentFragment) + .add(R.id.message_fcv, fragments.get(currentIndex), "" + currentIndex); + } else { + ft.hide(currentFragment) + .show(fragments.get(currentIndex)); + } + currentFragment = fragments.get(currentIndex); + ft.commit(); + } + + /** + * 鎭㈠fragment + */ + + private void restoreFragment() { + FragmentTransaction ft = mFragmentManager.beginTransaction(); + for (int i = 0; i < fragments.size(); i++) { + if (i == currentIndex) { + ft.show(fragments.get(i)); + } else { + ft.hide(fragments.get(i)); + } + } + ft.commit(); + //鎶婂綋鍓嶆樉绀虹殑fragment璁板綍涓嬫潵 + currentFragment = fragments.get(currentIndex); + } + + } -- Gitblit v1.8.0