问题描述
|
我的应用程序上有一个Tabhost,我正在使用一个“活动”组来处理内部的3个活动。
例:
活动组句柄
A-> B-> C
当我开始此活动时,我正在使用标志Intent.FLAG_ACTIVITY_CLEAR_TOP。
我的问题是,当用户从A-> B-> C转到后按后退按钮时,我的B活动出现了,但它没有恢复,重新加载或刷新。它具有与以前相同的状态。
例如,如果用户再次转到C,则C被刷新,但是从C返回时……B未被刷新。
在B上,我具有Implementend方法,例如onResume,onStart,onReestart并对其进行调试,因此主线程永远不会进入那里...
我需要刷新B,因为C可以进行更改以更改B上显示的内容。
我用谷歌搜索了3天,但找不到解决方案。
解决方法
我也有这个问题。
我正在根据此博客文章使用ActivityGroup代码。
当我按下“后退”按钮时,先前的“视图”可以很好地加载,但是与其关联的活动不会触发“ 0”。
我正在使用扩展活动,将其覆盖和覆盖public0ѭ。
我找到了此博客文章,因此尝试将视图投射为我的扩展活动,并将其命名为“ 0”。
答对了。
编辑...。这里有更多详细信息...
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中编写了以下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());
}
}
我不得不说,这就像我写过的最糟糕的android hack一样。我再也不会使用activitygroup。,((ReportActivity)getLocalActivityManager().getActivity(\"ReportActivity\")).onResume();
ReportActivity是您要支持的活动的名称
ps:v.getContext();
只返回ActivityGroup,它不能在onResume上调用子Activity,我发现onFocusChanged(boolean hasFocus)
非常适合ѭ13situations之类的情况。即使onResume()
也不会触发。我将其用于一些ѭ15和and13 apps的应用程序。在这里,您可以强制刷新并确保在您的Activity
重新获得焦点时始终将其触发。,希望您已使用“ 0”方法编写了刷新数据代码。