package com.basic.security.activity.helper; import android.os.SystemClock; import android.support.v4.app.FragmentManager; import com.basic.security.activity.MainActivity; import com.basic.security.base.BaseApplication; import com.basic.security.base.BaseFragment; import com.basic.security.fragment.FaceDetailFragment; import com.basic.security.fragment.PersonIdentityFragment; import com.basic.security.manager.FaceTitleAndTipsManager; import com.basic.security.utils.KeyboardUtil; import com.basic.security.utils.LogFileUtils; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.UiThread; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @EActivity public abstract class MaFragments extends MaBase { public abstract void toggleFaceComponent(BaseFragment showFragment); public abstract void toggleVideoView(BaseFragment showFragment); public abstract void toggleCamera(BaseFragment showFragment); public abstract void toggleToolbarButtons(BaseFragment showFragment); public abstract void refreshCurrentFragmentShowTime(BaseFragment showFragment); public abstract void refreshCurrentFragmentShowTime(); public abstract void toggleIdCardPhoneComponent(BaseFragment showFragment); public abstract void toggleBackgroundAndBorderComponent(BaseFragment showFragment); public abstract void toggleSystemSettingTabsComponent(BaseFragment showFragment); public abstract void toggleSystemSettingHintTabsComponent(BaseFragment showFragment); public abstract void togglePersonManagerComponent(BaseFragment showFragment); public BaseFragment currentFragment; public List fragments = new ArrayList<>(); public void showFragment(BaseFragment showFragment) { if (showFragment == fragment_su_logged_ic_wait_face || showFragment == fragment_su_logged_nic_wait_face) { BaseFragment.detectedResult = null; ((FaceDetailFragment)((MainActivity) BaseApplication.getApplication().activity).fragment_face_detail).setPerson(null); ((PersonIdentityFragment)((MainActivity)BaseApplication.getApplication().activity).fragment_person_identity).setIdentityWithPerson(null); } if (showFragment == fragment_su_auto_wait_face) { BaseFragment.detectedResult = null; } showFragment(showFragment, false); } // @UiThread public void showFragment(final BaseFragment showFragment, boolean forceRefresh) { LogFileUtils.logStacktraceToFile(this); if (currentFragment == fragment_home) { System.out.println(""); } FaceTitleAndTipsManager.clearFaceTitle(); BaseApplication.getApplication().activity.runOnUiThread(new Runnable() { @Override public void run() { // currentFragmentTextView.setText(showFragment.toString().split("_")[0]); if (currentFragment == showFragment && !forceRefresh) { return; } refreshCurrentFragmentShowTime(showFragment); toggleFaceComponent(showFragment); toggleCamera(showFragment); toggleVideoView(showFragment); toggleToolbarButtons(showFragment); toggleIdCardPhoneComponent(showFragment); toggleBackgroundAndBorderComponent(showFragment); 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); } } toggleSystemSettingHintTabsComponent(showFragment); togglePersonManagerComponent(showFragment); } }); } public void showOneFragment(BaseFragment fragment) { fragment.show(); FragmentManager fm = getSupportFragmentManager(); fm.beginTransaction() .setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out) .show(fragment) .commitAllowingStateLoss(); } public void hideOneFragment(BaseFragment fragment) { fragment.hide(); FragmentManager fm = getSupportFragmentManager(); fm.beginTransaction() .hide(fragment) .commitAllowingStateLoss(); } 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_setting, fragment_cluster_setting, fragment_admin_face_login, fragment_admin_password_login, fragment_home, fragment_rule_detail, fragment_face_detail_time, 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_record_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_visitor_model ); } }