package com.basic.security.activity.helper; import android.os.SystemClock; import android.support.v4.app.FragmentManager; import android.view.View; import com.basic.security.activity.MainActivity; import com.basic.security.base.BaseApplication; import com.basic.security.base.BaseFragment; import com.basic.security.fragment.CameraFragment; import com.basic.security.manager.FaceTitleAndTipsManager; import com.basic.security.utils.KeyboardUtil; import com.basic.security.utils.LogFileUtils; import org.androidannotations.annotations.EActivity; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @EActivity public abstract class MaFragments extends MaBase { public BaseFragment currentFragment; public List fragments = new ArrayList<>(); BaseFragment previewFragment; public void showFragment(BaseFragment showFragment) { if (showFragment == fragment_su_logged_ic_wait_face || showFragment == fragment_su_logged_nic_wait_face) { BaseFragment.detectedResult = null; BaseApplication.getApplication().activity.fragment_face_detail.updateDetailUI(null); BaseApplication.getApplication().activity.fragment_person_identity.updateIdentityListUI(null); } if (showFragment == fragment_su_auto_wait_face) { BaseFragment.detectedResult = null; } showFragment(showFragment, false); } public void showFragment(final BaseFragment showFragment, boolean forceRefresh) { previewFragment = currentFragment; LogFileUtils.logStacktraceToFile(this); if (currentFragment == fragment_home) { System.out.println(""); } FaceTitleAndTipsManager.clearFaceTitle(); BaseApplication.getApplication().activity.runOnUiThread(() -> { currentFragmentTextView.setText(showFragment.toString().split("_")[0]); if (currentFragment == showFragment && !forceRefresh) { return; } ((MainActivity) MaFragments.this).refreshCurrentFragmentShowTime(showFragment); ((MainActivity) MaFragments.this).toggleFaceComponent(showFragment); ((MainActivity) MaFragments.this).toggleCamera(showFragment); ((MainActivity) MaFragments.this).toggleVideoView(showFragment); ((MainActivity) MaFragments.this).toggleToolbarButtons(showFragment); ((MainActivity) MaFragments.this).toggleIdCardPhoneComponent(showFragment); ((MainActivity) MaFragments.this).toggleBackgroundAndBorderComponent(showFragment); ((MainActivity) MaFragments.this).toggleSystemSettingTabsComponent(showFragment); KeyboardUtil.hideSoftKeyboard(); for (BaseFragment fragment : fragments) { if (fragment != showFragment) { hideOneFragment(fragment); } } SystemClock.sleep(100); for (BaseFragment fragment : fragments) { if (fragment == showFragment) { hideOneFragment(fragment); showOneFragment(fragment); } } ((MainActivity) MaFragments.this).toggleSystemSettingHintTabsComponent(showFragment); ((MainActivity) MaFragments.this).togglePersonManagerComponent(showFragment); if ((previewFragment != fragment_su_auto_wait_face && previewFragment != fragment_door_access_result && previewFragment != fragment_su_auto_wait_admin ) || currentFragment == fragment_admin_face_login) { FaceTitleAndTipsManager.clearFaceTitle(); ((CameraFragment) fragment_camera).drawFaceRect(CameraFragment.lastDetectedResult); } }); } public void showOneFragment(BaseFragment fragment) { if (!fragment.isShow || !fragment.getUserVisibleHint()) { View view = fragment.getView(); if (view != null) { view.setVisibility(View.VISIBLE); } FragmentManager fm = getSupportFragmentManager(); fm.beginTransaction() // .setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out) .show(fragment) .commitAllowingStateLoss(); fragment.setUserVisibleHint(true); } fragment.show(); } public void hideOneFragment(BaseFragment fragment) { if (fragment.isShow || fragment.getUserVisibleHint()) { View view = fragment.getView(); if (view != null) { view.setVisibility(View.INVISIBLE); } fragment.hide(); FragmentManager fm = getSupportFragmentManager(); fm.beginTransaction() .hide(fragment) .commitAllowingStateLoss(); fragment.setUserVisibleHint(false); } } public void addFragment(BaseFragment... fragmentList) { for (BaseFragment fragment : fragmentList) { if (fragment != fragment_home) { hideOneFragment(fragment); } } fragments.addAll(Arrays.asList(fragmentList)); } public void addFragments() { addFragment( fragment_account_setting, fragment_base_setting, fragment_device, fragment_cluster, fragment_org, fragment_admin_face_login, fragment_admin_password_login, fragment_home, fragment_rule_detail, fragment_time_rule_list_dialog, fragment_device_list_dialog, fragment_time_rule_list_dialog_small, fragment_device_list_dialog_small, fragment_rule_list, fragment_su_auto_ic_compare_success, fragment_su_auto_ic_wait_idcard, fragment_su_logged_ic_compare_success, fragment_su_logged_ic_wait_face, fragment_su_logged_ic_wait_idcard, fragment_su_logged_nic_wait_face, fragment_su_logged_nic_wait_detail, fragment_su_auto_wait_admin, fragment_su_auto_wait_face, fragment_person_manage, fragment_door_access_fail, fragment_door_access_result, fragment_visit_list, fragment_door_access_success, fragment_door_access_confirm, fragment_sign_up_success, fragment_su_logged_wait_face, fragment_su_auto_nic_wait_detail, fragment_hint_tab, fragment_hint_door_access, fragment_hint_recognize, fragment_hint_sign_up, fragment_time_rule, fragment_business_person, fragment_time_rule_add, fragment_guest_mode ); } }