代码之家  ›  专栏  ›  技术社区  ›  Marcel Bro

克劳顿不时不露面

  •  5
  • Marcel Bro  · 技术社区  · 12 年前

    我的应用程序中有官方的导航抽屉。单击抽屉中的项目将在屏幕的内容部分打开新的碎片。每个片段包含 FrameLayout 具有用于显示克劳顿的相同id。

    基本用法是,当用户单击操作栏中的刷新按钮(通知正在进行的刷新)时,会显示无限的Crounton。刷新完成后,将显示另一个面包块(替换旧面包块)。在某些情况下,甚至在输入屏幕后立即显示Crounton(并在触发刷新时替换)。

    我遇到的问题有点难以描述。有些克劳顿只是时不时不露面。这通常发生在我在屏幕之间切换时(当我第一次在屏幕上按下刷新按钮时,最初的Crouton未显示或Crouton没有显示),然而 在刷新完成时以及之后按下刷新按钮时显示)。

    所以这是非常不可预测的。甚至有些情况下,屏幕上根本没有显示克劳顿,直到我切换到另一个屏幕并返回。

    为了显示克劳顿,我在每个Framgnet的布局中都使用了这个:

    <FrameLayout
        android:id="@+id/crouton_view"
        android:layout_width="match_parent"
        android:layout_height="@dimen/crouton_height"
        android:layout_alignParentTop="true" />
    

    在代码中,我有一个CrountonBuilder类,具有以下方法:

    public static Crouton getNewLastUpdateCrouton(Activity activity, boolean infinite, String plateNumber) {
        String lastUpdateString = ...;
        Crouton newCrouton = Crouton.makeText(activity, lastUpdateString, CroutonBuilder.getLastUpdate(activity),
                                        R.id.crouton_view);
        if (infinite) {
            newCrouton.setConfiguration(new Configuration.Builder().setDuration(
                                            Configuration.DURATION_INFINITE).build());
        }
        return newCrouton;
    }
    

    然后打电话 .show() 在返回的克劳顿身上。 当我调试并单步执行时 show() 方法,但有时什么都不显示。

    你知道我做错了什么吗?

    1 回复  |  直到 11 年前
        1
  •  9
  •   Marcel Bro    12 年前

    我发现,当我离开片段时,克劳顿停止出现,而克劳顿目前正在放映。使命感 Crouton.cancelAllCroutons() 在里面 onPause() 帮助。