单击后退按钮时活动组不会刷新活动
我的应用程序上有一个tabhost,我正在使用一个处理3个活动的活动组。单击后退按钮时活动组不会刷新活动
实施例: 的ActivityGroup把手 A - >乙 - “ç
当启动该活动我使用标志Intent.FLAG_ACTIVITY_CLEAR_TOP。
我的问题是当用户从A-> B-> C并按回来按钮,我的B活动显示,但它不恢复或重新加载或刷新。它和以前一样。
例如,如果用户再次转到C,则C被刷新,但当从C返回时...... B不是。
在BI已经implementend方法如的onResume,在onStart,onReestart和调试它的主线程中有永不熄灭......
,我需要刷新B,因为C能作出这样的改变显示的内容上的变化B.
我已经googleled这3天,我无法找到一个解决办法..
我希望你有这个方法onResume()
写你的更新数据的代码。
我也有这个问题。
我在使用基于this blog post的ActivityGroup代码。
当我按下后退按钮时,前面的视图将加载正常,但与其关联的活动不会触发onResume()
。
我正在使用扩展的活动覆盖和公开onResume()
。
我发现this blog post,所以试图将视图作为我的扩展活动投入并调用onResume()
。
宾果。
编辑....这里的一些更详细...
public class YFIMenuListActivity extends ListActivity {
....
@Override
public void onResume() {
super.onResume();
}
....
}
onResume()
通常是受保护的,但我重写它,并把它公开,这样我的ActivityGroup可以调用它。 我只在这个活动组中有扩展列表活动(我只是在玩耍)。如果你有不同的活动,每个人都必须重写onResume()
,我猜你必须在铸造和调用之前查看你从v.getContext()
得到的背景类型。
我的ActivityGroup看起来是这样的:
public class BrowseGroup extends ActivityGroup {
.....
@Override
protected void onResume() {
super.onResume();
// call current activity's onResume()
View v = history.get(history.size()-1);
YFIMenuListActivity currentActivity = (YFIMenuListActivity)v.getContext();
currentActivity.onResume();
}
....
}
我已经成功地实现cousin_itt的方法的扩展版本。
在我的两个活动中所使用的活动组内我改变的onResume来自:
protected void onResume()
到
public void onResume()
然后我在我的ActivityGroup手动断火onResumes写了下面的onResume功能:
@Override
protected void onResume() {
super.onResume();
View v = history.get(history.size()-1);
MainPeopleView currentActivity = null;
try {
currentActivity = (MainPeopleView)v.getContext();
currentActivity.onResume();
}
catch (ClassCastException e) {
Log.e(TAG, e.toString());
}
ProfileView otherActivity = null;
try {
otherActivity = (ProfileView)v.getContext();
otherActivity.onResume();
}
catch (ClassCastException e) {
Log.e(TAG, e.toString());
}
}
我不得不说,这感觉就像是最糟糕的android黑客我'永远写下来。我再也不使用activitygroup。
我发现onFocusChanged(boolean hasFocus)
非常适合ActivityGroup
等情况。即使onResume()
没有,这也会触发。我使用它的几个我的应用程序有TabHost
s和ActivityGroup
s。在这里,您可以强制刷新并确保当您的Activity
重新获得焦点时它总是被解雇。
((ReportActivity)getLocalActivityManager().getActivity("ReportActivity")).onResume();
ReportActivity是名字要备份活动 PS:v.getContext();
只返回活动组,它不能调用子活动onResume
你可以使用startActivityForResult(); – 2011-04-20 07:12:29
您应该将这些代码写在B的onResume()中,负责显示内容。如果您尝试访问某些数据,即使您必须在onResume方法中填充数据。如果不清楚发布B的创建方法,并在C调用后标记哪些应该更改。 – 2011-04-20 07:47:17
我知道,我已经覆盖了onResume方法,但是这个方法从来没有被调用过。 我调试了一些断点,但执行线程永远不会进入onResume ...我也尝试onReestart和onStart ... – sluceno 2011-04-20 18:13:12