我的应用程序上有一个tabhost,我正在使用一个Activity组来处理里面的3个活动。
实施例: ActivityGroup句柄 A - > B - > ç
当我开始这项活动时,我正在使用标志Intent.FLAG_ACTIVITY_CLEAR_TOP。
我的问题是当用户从A-> B-> C开始并按回按钮时,我的B活动显示,但它没有恢复或重新加载或刷新。它与以前的状态相同。
例如,如果用户再次进入C,则刷新C,但是当C从C返回时...... B不是。
在B上我实现了诸如onResume,onStart,onReestart等方法并调试它,主线程永远不会进入...
我需要刷新B,因为C可以进行更改以更改B上显示的内容。
我已将谷歌搜索了3天,但我找不到解决方案..
答案 0 :(得分:2)
我也有这个问题。
我使用的是基于this blog post的ActivityGroup代码。
当我按下后退按钮时,前一个View会加载正常,但与之关联的活动不会触发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();
}
....
}
答案 1 :(得分:1)
我设法实现了cousin_itt方法的扩展版本。
在我在活动组中使用的两个活动中,我更改了来自:
的Resumeprotected void onResume()
到
public void onResume()
然后我在ActivityGroup中编写了以下onResume函数来手动触发onResumes:
@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());
}
}
我不得不说,这感觉就像我写过的最糟糕的机器人黑客。我再也不会使用activitygroup了。
答案 2 :(得分:1)
((ReportActivity)getLocalActivityManager().getActivity("ReportActivity")).onResume();
ReportActivity是您要返回活动的名称 ps:v.getContext();
只返回ActivityGroup,它无法调用子Activity onResume
答案 3 :(得分:0)
我希望您已使用此方法onResume()
编写了刷新数据代码。
答案 4 :(得分:0)
我发现onFocusChanged(boolean hasFocus)
非常适合像ActivityGroup
这样的情况。即使onResume()
没有,这也会触发。我将它用于我的一些具有TabHost
和ActivityGroup
s的应用。在这里,您可以强制刷新并确保在Activity
重新获得焦点时始终触发。