PageManager.java 2.32 KB
package com.sunvote.xpadapp.activity;

import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;

import com.sunvote.xpadapp.R;
import com.sunvote.xpadapp.fragment.AdminFragment;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Elvis on 2017/11/30 15:07
 * Email:Eluis@psunsky.com
 * 版权所有:长沙中天电子设计开发有限公司
 * Description: 人大通用版XPadAppRD重构
 * 页面管理,当前显示页面控制
 */
public class PageManager {

    private static volatile PageManager instance;

    private FragmentManager fragmentManager ;

    public static PageManager getInstance() {
        if(instance == null){
            synchronized (PageManager.class){
                if(instance == null){
                    instance = new PageManager();
                }
            }
        }
        return instance;
    }

    private List<Fragment> fragmentList = new ArrayList<>();
    private List<Fragment> currentStack = new ArrayList<>();

    public boolean pop1(){
        if(currentStack.size() > 0) {
            FragmentTransaction tx = fragmentManager.beginTransaction();
            tx.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
            Fragment fragment = currentStack.get(currentStack.size()-1);
            tx.remove(fragment);
            tx.commitAllowingStateLoss();
            currentStack.remove(fragment);
            return true;
        }
        return false;
    }

    public void popStack(){
        for(Fragment temp : currentStack){
            FragmentTransaction tx = fragmentManager.beginTransaction();
            tx.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
            tx.remove(temp);
            tx.commitAllowingStateLoss();
        }
        currentStack.clear();
    }

    public void setFragmentManager(FragmentManager fragmentManager) {
        this.fragmentManager = fragmentManager;
    }

    public void showAdminFragment(){
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        AdminFragment fAdmin = new AdminFragment();
        currentStack.add(fAdmin);
        transaction.add(R.id.frame_content, fAdmin, "admin");
        transaction.addToBackStack(fAdmin.getClass().getName());
        transaction.commit();
    }


}