From 3aa86eda8f416bec308d065689d39c847d2d9cc7 Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期二, 30 一月 2024 19:48:26 +0800
Subject: [PATCH] 2024年01月30日19:44:13

---
 app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java |  214 +++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 181 insertions(+), 33 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 24a9ef0..c13e282 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,19 +1,52 @@
 package com.hdl.photovoltaic.ui.message;
 
 import android.os.Bundle;
+import android.os.SystemClock;
 import android.view.View;
+import android.widget.TextView;
 
 
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.hdl.linkpm.sdk.core.exception.HDLException;
 import com.hdl.photovoltaic.R;
 import com.hdl.photovoltaic.base.CustomBaseFragment;
+import com.hdl.photovoltaic.config.ConstantManage;
 import com.hdl.photovoltaic.databinding.FragmentMessageBinding;
+import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
+import com.hdl.photovoltaic.enums.MessageFunctionTabSwitch;
+import com.hdl.photovoltaic.enums.MessageStateType;
+import com.hdl.photovoltaic.listener.CloudCallBeak;
+import com.hdl.photovoltaic.other.HdlCommonLogic;
+import com.hdl.photovoltaic.other.HdlLogLogic;
+import com.hdl.photovoltaic.other.HdlMessageLogic;
+import com.hdl.photovoltaic.ui.bean.BUserInfo;
+import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+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 final List<Fragment> fragmentList = new ArrayList<>();
+    private int currentIndex = 0;
 
     @Override
     public Object getContentView() {
@@ -24,6 +57,8 @@
     @Override
     public void onBindView(Bundle savedInstanceState) {
 
+        //鍒濆鍖栫鐗�
+        initFragment(savedInstanceState);
         //鍒濆鍖栫晫闈�
         initView();
         //鍒濆鍖栫洃鍚櫒
@@ -33,56 +68,169 @@
     }
 
     private void initEvent() {
-        viewBinding.messageTabDeviceAlertCl.setOnClickListener(new View.OnClickListener() {
+
+        //鍙戠敓涓�
+        viewBinding.messageTabNascentCl.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                viewBinding.messageTabDeviceAlertTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
-                viewBinding.messageTabPlatformPushTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-                viewBinding.messageTabDeviceLogTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-                viewBinding.line1V.setVisibility(View.VISIBLE);
-                viewBinding.line2V.setVisibility(View.GONE);
-                viewBinding.line3V.setVisibility(View.GONE);
+                currentIndex = 0;
+                initView();
+                showFragment();
+                postEventBus(MessageFunctionTabSwitch.nascent);
+
+            }
+        });
+        //宸叉仮澶�
+        viewBinding.messageTabRecoverCl.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                currentIndex = 1;
+                initView();
+                showFragment();
+                postEventBus(MessageFunctionTabSwitch.recover);
 
             }
         });
 
-        viewBinding.messageTabPlatformPushCl.setOnClickListener(new View.OnClickListener() {
+        //鍏ㄩ儴
+        viewBinding.messageTabAllCl.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                viewBinding.messageTabDeviceAlertTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-                viewBinding.messageTabPlatformPushTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
-                viewBinding.messageTabDeviceLogTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-                viewBinding.line1V.setVisibility(View.GONE);
-                viewBinding.line2V.setVisibility(View.VISIBLE);
-                viewBinding.line3V.setVisibility(View.GONE);
-            }
-        });
-
-        viewBinding.messageTabDeviceLogCl.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                viewBinding.messageTabDeviceAlertTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-                viewBinding.messageTabPlatformPushTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-                viewBinding.messageTabDeviceLogTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
-                viewBinding.line1V.setVisibility(View.GONE);
-                viewBinding.line2V.setVisibility(View.GONE);
-                viewBinding.line3V.setVisibility(View.VISIBLE);
+                currentIndex = 2;
+                initView();
+                showFragment();
+                postEventBus(MessageFunctionTabSwitch.all);
             }
         });
     }
 
 
     private void initView() {
-        viewBinding.messageTabDeviceAlertTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
-        viewBinding.messageTabPlatformPushTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-        viewBinding.messageTabDeviceLogTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
-        viewBinding.line1V.setVisibility(View.VISIBLE);
-        viewBinding.line2V.setVisibility(View.GONE);
-        viewBinding.line3V.setVisibility(View.GONE);
+        if (this.currentIndex == 0) {
+            viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
+            viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
+            viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
+            viewBinding.line1V.setVisibility(View.VISIBLE);
+            viewBinding.line2V.setVisibility(View.GONE);
+            viewBinding.line3V.setVisibility(View.GONE);
+        } else if (this.currentIndex == 1) {
+            viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
+            viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
+            viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
+            viewBinding.line1V.setVisibility(View.GONE);
+            viewBinding.line2V.setVisibility(View.VISIBLE);
+            viewBinding.line3V.setVisibility(View.GONE);
+        } else if (this.currentIndex == 2) {
+            viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
+            viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
+            viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
+            viewBinding.line1V.setVisibility(View.GONE);
+            viewBinding.line2V.setVisibility(View.GONE);
+            viewBinding.line3V.setVisibility(View.VISIBLE);
+        }
+
     }
 
     private void initData() {
     }
 
+    /**
+     * 鍙戝竷鐐瑰嚮浜嬩欢
+     *
+     * @param tabSwitch -
+     */
+    private void postEventBus(MessageFunctionTabSwitch tabSwitch) {
+        BaseEventBus baseEventBus = new BaseEventBus();
+        baseEventBus.setTopic(ConstantManage.message_function_tab_switch);
+        baseEventBus.setType(tabSwitch.toString());
+        //鍙戦�佺矘鎬т簨浠�(濡傛灉涓嶅彂绮樻�т簨浠朵細閬囧埌涓�涓病鏈夊姞杞藉嚭鏉ョ殑纰庣墖鎺ユ敹涓嶅埌淇℃伅)
+        EventBus.getDefault().postSticky(baseEventBus);
+    }
 
+
+    /**
+     * 鍒濆鍖朏ragment
+     *
+     * @param savedInstanceState -
+     */
+    private void initFragment(Bundle savedInstanceState) {
+        mFragmentManager = _mActivity.getSupportFragmentManager();
+        //纰庣墖鍒濆鍖�
+        NascentMessageFragment mNascentMessageFragment = new NascentMessageFragment();
+        RecoverMessageFragment mRecoverMessageFragment = new RecoverMessageFragment();
+        AllMessageFragment mAllMessageFragment = new AllMessageFragment();
+        if (savedInstanceState != null) {
+            //鈥滃唴瀛橀噸鍚�濇椂璋冪敤 鑾峰彇鈥滃唴瀛橀噸鍚�濇椂淇濆瓨鐨勭储寮曚笅鏍�
+            currentIndex = savedInstanceState.getInt(CURRENT_FRAGMENT, 0);
+            if (fragmentList.size() != 0) {
+                fragmentList.clear();
+            }
+            fragmentList.add(mFragmentManager.findFragmentByTag(0 + ""));
+            fragmentList.add(mFragmentManager.findFragmentByTag(1 + ""));
+            fragmentList.add(mFragmentManager.findFragmentByTag(2 + ""));
+            restoreFragment();//鎭㈠fragment椤甸潰
+        } else {
+            //姝e父鍚姩鏃惰皟鐢�
+            fragmentList.add(mNascentMessageFragment);
+            fragmentList.add(mRecoverMessageFragment);
+            fragmentList.add(mAllMessageFragment);
+            showFragment();
+        }
+
+    }
+
+    /**
+     * 浣跨敤show() hide()鍒囨崲椤甸潰
+     * 鏄剧ずfragment
+     */
+    private void showFragment() {
+        FragmentTransaction ft = mFragmentManager.beginTransaction();
+        //濡傛灉涔嬪墠娌℃湁娣诲姞杩�
+        if (!fragmentList.get(currentIndex).isAdded()) {
+            //绗笁涓弬鏁颁负娣诲姞褰撳墠鐨刦ragment鏃剁粦瀹氫竴涓猼ag
+            ft.hide(currentFragment).add(R.id.message_fcv, fragmentList.get(currentIndex), currentIndex + "");
+        } else {
+            ft.hide(currentFragment).show(fragmentList.get(currentIndex));
+        }
+        currentFragment = fragmentList.get(currentIndex);
+        ft.commit();
+        //鎶婂綋鍓嶆樉绀虹殑fragment璁板綍涓嬫潵
+        currentFragment = fragmentList.get(currentIndex);
+
+
+    }
+
+    /**
+     * 鎭㈠fragment
+     */
+    private void restoreFragment() {
+        FragmentTransaction ft = mFragmentManager.beginTransaction();
+        for (int i = 0; i < fragmentList.size(); i++) {
+            if (i == currentIndex) {
+                ft.show(fragmentList.get(i));
+            } else {
+                ft.hide(fragmentList.get(i));
+            }
+        }
+        ft.commit();
+
+    }
+
+    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
+    public void onEventMessage(BaseEventBus eventBus) {
+        super.onEventMessage(eventBus);
+        if (eventBus == null) {
+            return;
+        }
+        //鎺ユ敹澶栭儴鐐瑰嚮浜嬩欢
+        if (eventBus.getTopic().equals(ConstantManage.homepage_title_tab_switch)) {
+            if (eventBus.getType().equals(HomepageTitleTabSwitch.message.toString())) {
+                // 鍙栨秷绮樻�т簨浠�
+                EventBus.getDefault().removeStickyEvent(eventBus);
+                postEventBus(MessageFunctionTabSwitch.nascent);
+                HdlLogLogic.print("姝e湪鐐瑰嚮銆愭秷鎭��");
+
+            }
+        }
+    }
 }

--
Gitblit v1.8.0