From 936fb552a30c05fc7a60c20f47bf6fccbc2dc1c1 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期三, 27 十二月 2023 16:17:23 +0800 Subject: [PATCH] 备份一下代码 --- app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java | 216 +++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 167 insertions(+), 49 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 5ab25ec..0150223 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 @@ -4,9 +4,24 @@ import android.view.View; +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; +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.other.HdlCommonLogic; +import com.hdl.photovoltaic.other.HdlLogLogic; +import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus; + +import org.greenrobot.eventbus.EventBus; + +import java.util.ArrayList; +import java.util.List; /** * 娑堟伅 @@ -14,6 +29,13 @@ 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 +46,8 @@ @Override public void onBindView(Bundle savedInstanceState) { + //鍒濆鍖栫鐗� + initFragment(savedInstanceState); //鍒濆鍖栫晫闈� initView(); //鍒濆鍖栫洃鍚櫒 @@ -33,69 +57,163 @@ } private void initEvent() { + + //鍙戠敓涓� + viewBinding.messageTabNascentCl.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + currentIndex = 0; + showFragment(); + initView(); + + } + }); + //宸叉仮澶� + viewBinding.messageTabRecoverCl.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + currentIndex = 1; + showFragment(); + initView(); + + } + }); + //鍏ㄩ儴 viewBinding.messageTabAllCl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); - viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); - viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); - 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); - - } - }); - - viewBinding.messageTabNascentCl.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); - viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); - viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); - 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); - } - }); - - viewBinding.messageTabRecoverCl.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); - viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); - viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); - 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); + currentIndex = 2; + showFragment(); + initView(); } }); } private void initView() { - viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); - viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); - viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); - 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); + if (this.currentIndex == 0) { + viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); + viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); + viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); + viewBinding.line1V.setVisibility(View.GONE); + viewBinding.line2V.setVisibility(View.VISIBLE); + viewBinding.line3V.setVisibility(View.GONE); + postEventBus(MessageFunctionTabSwitch.nascent); + } else if (this.currentIndex == 1) { + viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); + viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); + viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); + viewBinding.line1V.setVisibility(View.GONE); + viewBinding.line2V.setVisibility(View.GONE); + viewBinding.line3V.setVisibility(View.VISIBLE); + postEventBus(MessageFunctionTabSwitch.recover); + } else if (this.currentIndex == 2) { + viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); + viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); + viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); + viewBinding.line1V.setVisibility(View.VISIBLE); + viewBinding.line2V.setVisibility(View.GONE); + viewBinding.line3V.setVisibility(View.GONE); + postEventBus(MessageFunctionTabSwitch.all); + } } 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().post(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 + */ + 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(); + //鎶婂綋鍓嶆樉绀虹殑fragment璁板綍涓嬫潵 + currentFragment = fragmentList.get(currentIndex); + } + + + @Override + public void onEventMessage(BaseEventBus eventBus) { + super.onEventMessage(eventBus); + //鎺ユ敹澶栭儴鐐瑰嚮浜嬩欢 + if (eventBus.getTopic().equals(ConstantManage.homepage_title_tab_switch)) { + if (eventBus.getType().equals(HomepageTitleTabSwitch.message.toString())) { + postEventBus(MessageFunctionTabSwitch.nascent); + HdlLogLogic.print("姝e湪鐐瑰嚮銆愭秷鎭��"); + } + } + } + } -- Gitblit v1.8.0