操作系统终止我的活动后,SlidingUpPanelLayout在恢复时不会崩溃

时间:2015-02-19 20:39:37

标签: android android-layout android-activity

我正在使用SlidingUpPanelLayout库的最新版本(3.0)。如果它在后台运行,Android操作系统会定期杀死我的Activity(按Home而不是Back退出)。如果发生这种情况,并且当用户上次使用该应用程序时面板已展开,则在创建面板时,面板仍会展开,但内部的所有内容都将消失。基本上是一个空白的屏幕。

在这种情况下,我实际上想要将活动重置为它的初始状态(完全退出后打开),这是崩溃的。但我无法让它发挥作用。在布局xml中,我将初始状态设置为折叠。

<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" >

我也放置了这一行

slidingUpPanelLayout.setPanelState(PanelState.COLLAPSED);

在onCreate()的几个地方,但是面板没有折叠。我在每次崩溃尝试之前和之后打印了面板状态,发现即使在第一次崩溃尝试之前,panelState实际上也已设置为折叠状态,即使它显然没有折叠。

这是库中的一个错误,还是我做错了什么。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要覆盖onResume事件,然后调用collapse操作。下面的代码应该做的工作:

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