У меня есть официальный навигационный ящик в моем приложении. Щелчок по элементам в ящике открывает новые фрагменты в части содержимого экрана. Каждый фрагмент содержит FrameLayout
с тем же идентификатором, который используется для отображения крутона.
Основное использование заключается в том, что бесконечный Crouton отображается, когда пользователь нажимает кнопку обновления на панели действий (уведомляя о текущем обновлении). После завершения обновления отображается еще один крутон (заменяющий старый). В некоторых случаях гренки отображаются даже сразу после входа на экран (и заменяются при запуске обновления).
Проблема, с которой я столкнулся, немного сложно описать. Некоторые гренки просто не отображаются время от времени. Обычно это происходит, когда я переключаюсь между экранами (начальный гренок не отображается или гренок не отображается, когда я нажимаю кнопку обновления в первый раз на этом экране, однако он отображается, когда обновление завершается и когда я нажимаю кнопку обновления после этого).
Так что это довольно непредсказуемо. Бывают даже случаи, когда на экране вообще не отображается гренок, пока я не переключусь на другой экран и обратно.
Для отображения гренок я использую это в каждом макете 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;
}
а затем просто вызовите .show()
на возвращенном крутоне. Когда я отлаживаю и выполняю шаг, вызывается метод show()
, но иногда просто ничего не отображается.
У вас есть идеи, что я делаю неправильно?
Crouton.cancelAllCroutons()
вonPause()
помог. - person Marcel Bro   schedule 28.02.2014