2015-02-19 11 views
5

Używam najnowszą wersję (3.0) biblioteki SlidingUpPanelLayout. Okresowo system operacyjny Android zabiłby moją aktywność, jeśli działa w tle (wyjście przez naciśnięcie Home zamiast Back). Jeśli tak się stanie, a panel został rozbudowany po ostatnim użyciu aplikacji, panel będzie nadal rozwijany, gdy zostanie utworzony, ale cała zawartość wewnątrz zniknie. Zasadniczo pusty ekran.SlidingUpPanelLayout nie zwinie się po wznowieniu po OS zabić moją działalność

W tym scenariuszu rzeczywiście chcę zresetować działanie do jego stanu początkowego (otwórz po pełnym zakończeniu), który jest zwinięty. Ale nie mogę tego zmusić do działania. W układzie xml ustawiam stan początkowy na zwinięty.

<com.sothree.slidinguppanel.SlidingUpPanelLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:sothree="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/sliding_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="bottom" 
    sothree:umanoPanelHeight="48dp" 
    sothree:umanoShadowHeight="4dp" 
    sothree:umanoInitialState="collapsed" > 

umieściłem również tę linię

slidingUpPanelLayout.setPanelState(PanelState.COLLAPSED); 

w kilku miejscach w onCreate(), ale panel nie załamuje się. Wydrukowałem stan paneli przed i po każdej próbie zwijania i odkryłem, że panelState jest faktycznie ustawiony na zwinięcie nawet przed pierwszą próbą zwinięcia, mimo że wyraźnie nie jest zwinięty.

Czy to błąd w bibliotece, czy też robię coś nie tak.

Dzięki za pomoc.

Odpowiedz

1

Należy zastąpić zdarzenie onResume, a następnie wywołać akcję zwijania. Poniższy kod powinien wykonać pracę:

@Override 
protected void onResume() { 
    super.onResume(); 
    slidingUpPanelLayout.setPanelState(PanelState.COLLAPSED); 
} 
Powiązane problemy