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