首页 > 解决方案 > 我有一张“票”,需要在整个生命周期中记住状态

问题描述

我有一个“票”,它具有名称和 UUID 等功能......它具有选择状态。跨活动记住选择。所以返回回收站视图意味着它“仍然”被选中(不,实际上不是......它是通过编码魔法重新选择的)它具有“新”和“现有”状态它可以从“新”转换为“现有”生命周期中期。(票证的生命周期,而不是活动的生命周期)

我创建了一个状态引擎,但这似乎是错误的模式。下面示例中的类的目的是解耦活动/组件。

我知道以下示例看起来不像状态引擎,这就是我问这个问题的原因,实际的状态引擎似乎不符合我的需求。

处理以下示例的推荐方法是什么:

public class TicketStateEngine {

    private static int mCurrentSelectedRecyclerViewPosition = -1;
    private static LinearLayoutManager mLinearLayoutManager;
    private static boolean mIsNewTicket;

    public static boolean isIsNewTicket() {
        return mIsNewTicket;
    }

    public static void setIsNewTicket(boolean isNewTicket) {
        mIsNewTicket  = isNewTicket;
    }

    public static void setLinearLayoutManager(LinearLayoutManager linearLayoutManager) {
        mLinearLayoutManager = linearLayoutManager;
    }

    public static int getCurrentSelectedRecyclerViewPosition() {
        return mCurrentSelectedRecyclerViewPosition;
    }

    public static void setCurrentSelectedRecyclerViewPosition(int currentSelectedRecyclerViewPosition) {
        mCurrentSelectedRecyclerViewPosition = currentSelectedRecyclerViewPosition;
    }

    public static void scrollToSelected() {
        try {
            mLinearLayoutManager.scrollToPositionWithOffset(mCurrentSelectedRecyclerViewPosition, 0);
        } catch (NullPointerException e) {
            Log.e("NullPointerException", "Make sure a Linear Layout manger is set for TicketStateEngine");
            throw e;
        }
    }
}

标签: javaandroiddesign-patternsstate

解决方案


推荐阅读