我的应用程序中有官方导航抽屉。单击抽屉中的项目会在屏幕的内容部分中打开新的片段。每个片段包含FrameLayout
,其ID相同,用于显示Crouton。
基本用法是当用户单击操作栏中的刷新按钮时显示无限的Crouton(通知正在进行的刷新)。刷新完成后,会显示另一个烤面包片(替换旧的烤面包片)。在某些情况下,即使在输入屏幕后也会显示Croutons(并在触发刷新时替换)。
我遇到的问题有点难以描述。有些油炸面包丁不时不显示。它通常发生在我在屏幕之间切换时(当我在屏幕上第一次按下刷新按钮时,未显示初始Crouton或未显示Crouton - 但是,当刷新完成时, 显示当我按下刷新按钮后)。
所以这是非常不可预测的。甚至有些情况下,当我切换到另一个屏幕并返回时,屏幕根本不显示Crouton。
为了显示Croutons,我在每个Framgnet的布局中使用它:
<FrameLayout
android:id="@+id/crouton_view"
android:layout_width="match_parent"
android:layout_height="@dimen/crouton_height"
android:layout_alignParentTop="true" />
在代码中我有CroutonBuilder类,有以下方法:
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;
}
然后只需在返回的Crouton上调用.show()
。
当我调试并逐步执行时,会调用show()
方法,但有时只显示任何内容。
你有什么想法我做错了吗?
答案 0 :(得分:9)
我发现Crouton在我离开片段时停止出现,而Crouton目前正在展示。在Crouton.cancelAllCroutons()
中拨打onPause()
有帮助。