没有刷新活动的Android后退

时间:2015-09-18 22:29:16

标签: android android-listview activity-lifecycle

我有2个活动,其中一个活动导致另一个活动。 第一个活动显示列表视图,项目点击导致第二个活动。 当我单击后退按钮时,我返回到第一个活动,但列表重新加载并向上滚动到第一个项目。我希望列表在我回到它之后保持原位。

3 个答案:

答案 0 :(得分:0)

如果你在活动A中调用finish(),当在背面打开新的活动B时,你将调用活动A的onCreate()以避免这种情况,避免在活动A的onItemClickListner()中调用活动A中的finish()在活动A中记录tge点击的tge位置,在这种情况下,在活动B中调用后退按钮将在活动A中输入tge onResume(),其中你可以调用直接滚动:

getListView().setSelection(<position>);

或者为了顺利滚动:

getListView().smoothScrollToPosition(<position>);

答案 1 :(得分:-1)

当你按下时,你会在该活动上调用oncreate(),以便重新加载所有内容 你可以使用:

   getListView().smoothScrollToPosition(yourpostion);

并考虑以另一种方式使用片段。 建议使用recyclerview。

答案 2 :(得分:-1)

如果您未在活动A上致电finish(),即使您转到活动B并返回,活动A也不应再次呼叫整个onCreate()

如果您查看活动的生命周期,它会将活动A放在onPause()中,可能会onStop(),这取决于您在活动B上的操作以及您如何定义{{1}在AndroidManifest.xml中。

因此,当您致电launchMode时,请勿致电startActivity(..)。否则它将再次加载所有内容以绘制活动A.

另一种可能的方法是使用

finish()

或者您可以使用@Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); .. }

从Parse.com获取数据结束后(如SharedPreference的{​​{1}}),您可以读取从活动B传递的数据,将用户重新定位到它们所在的列表。

编辑:

阅读this article,了解如何“回归”您所在的活动。