【发布时间】:2018-02-27 06:41:39
【问题描述】:
我的主页中有一个 ListView (MainActivity.java),我想在用户返回时保留 ListView 的位置(如果向上滚动,我想显示确切的 ListView 位置)到主页。
由于 MainActivity 在用户单击列表项时转到 onPause() -> onStop() 方法, 我将 ListView 的状态保存在 onPause() 中。为了获得返回 Parcelable 值,我使用了一个名为 state 的全局变量。
state = list.onSaveInstanceState(); //line 1
当用户返回 MainActivity() 时,它会通过 onStart(),所以我在 onStart() 中获得了保存的状态。
if (state != null) {
//set adapter to listview
list.setAdapter(myAdapter);
//Restore previous state
list.onRestoreInstanceState(state);
}
问题是第 1 行 没有返回任何状态。(它给出一个空值)。 如何解决这个问题?
谢谢。
【问题讨论】:
-
要实现您想要的,您需要获取滚动条的当前位置(或“y”)并将其保存在某处,然后在返回时将滚动条设置为先前保存的位置。
-
@Andy :我在 onItemClick y =list.getScrollY(); 中得到了 y 值并在 onStart() ->list.setScrollY(y) 中设置 y 值;但还是没听懂??