如何避免在android设备上重新加载数据返回按钮

如何避免在android设备上重新加载数据返回按钮,android,button,android-activity,reload,back,Android,Button,Android Activity,Reload,Back,我使用的是基于android tab的TabGroupActivity应用程序,该应用程序有一个ListActivity a,它可以深入到详细活动D,当我单击设备后退按钮时,它会导航回ListActivity a并重新记录数据进度栏,显示后退按钮上的进度。 如何避免重新加载背面Buttoon上的数据? 任何帮助都将不胜感激。如果您查看以下内容,您可以使用保存需要保存的内容,然后在中恢复您的活动: 当您转到其他活动并按back时,它将调用finish。第一个活动位于onStop方法上,因为它不再可

我使用的是基于android tab的TabGroupActivity应用程序,该应用程序有一个ListActivity a,它可以深入到详细活动D,当我单击设备后退按钮时,它会导航回ListActivity a并重新记录数据进度栏,显示后退按钮上的进度。 如何避免重新加载背面Buttoon上的数据? 任何帮助都将不胜感激。

如果您查看以下内容,您可以使用保存需要保存的内容,然后在

中恢复您的活动:

当您转到其他活动并按back时,它将调用finish。第一个活动位于onStop方法上,因为它不再可见。因此,当您返回到第一个活动时,它将调用onStart和onstop方法

尝试在不调用超级方法的情况下重载此方法,这可能是一个非常糟糕的主意

您还可以尝试记住获取当前选项卡索引时的位置,并在onResume方法中将当前选项卡设置为该索引

在listactivity中只需要一个int属性savedPosition。 private int savedPosition=-1

@Override
protected void onPause() {
  savedPosition = getListView().getFirstVisiblePosition();

  super.onPause();
}



@Override
protected void onResume() {
  super.onResume();
  if(savedPosition != -1) {
    getList().setSelection(savedPosition);
  }
}

在onCreate事件中,我正在调用一个webservice来加载数据,单击“后退”按钮时调用该Web Service,我希望避免调用“后退”按钮上的webservice。如果这是相同的数据-请参阅下面的答案,否则-我想您没有太多选项,但要重新加载itI,请使用以下代码保存变量值IsAlreadyLoaded@重写SaveInstanceStateBundle savedInstanceState{savedInstanceState.putBooleanIsAlreadyLoaded,true;super.onSaveInstanceStatesavedInstanceState;}上的公共无效,并在返回到“活动”时在oncreate事件中检索此值。但是,我将savedInstanceState设置为null,并且我无法获得我保存的内容。在下面的代码中,savedInstanceState始终为null`boolean myBoolean=savedInstanceState.getBooleanIsAlreadyLoaded;在哪里实现onSaveInstanceState?您能在保存/检索数据的地方发布所有代码吗?返回到上一个活动时,不会调用onCreate,除非内存不足,并且系统决定在该活动上调用onDestroy。很抱歉,我不太明白。按back键时,当前活动为destroy,上一个活动调用onStart/onResume。在这里,似乎这就是TabHost活动。如果在列表活动中加载数据的唯一方法是onCreate,那么在调用onStart或onResume时,它看起来像是TabHostActivity的“重新创建所有”选项卡。但我已经读到,您需要专门调用tabhost.destroyActivity和startActivity来重新创建活动。我的观点是,当你按下back键时,它不应该调用你的ListActivity的onCreate,你应该看看原因。@Asahi,我重写onSaveInstanceState并用值true保存一个变量,如下所示@override public void onSaveInstanceStateBundle savedInstanceState{savedInstanceState.putBooleanIsAlreadyLoaded,true;super.onSaveInstanceStatesavedInstanceState;}然后尝试在onCreate中获取该值,如下面的布尔值myBoolean=savedInstanceState.getBooleanIsAlreadyLoaded;但无法获取变量值,因为savedInstanceState对象为null