单击后退按钮时活动组不会刷新活动

问题描述:

我的应用程序上有一个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天,我无法找到一个解决办法..

+0

你可以使用startActivityForResult(); – 2011-04-20 07:12:29

+0

您应该将这些代码写在B的onResume()中,负责显示内容。如果您尝试访问某些数据,即使您必须在onResume方法中填充数据。如果不清楚发布B的创建方法,并在C调用后标记哪些应该更改。 – 2011-04-20 07:47:17

+0

我知道,我已经覆盖了onResume方法,但是这个方法从来没有被调用过。 我调试了一些断点,但执行线程永远不会进入onResume ...我也尝试onReestart和onStart ... – sluceno 2011-04-20 18:13:12

我希望你有这个方法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(); 
    } 
.... 
} 
+0

你是什么意思? – Mikey 2011-06-29 15:53:17

+0

我有同样的问题,我想,现在与onResume,它回到以前的活动,当我改变方向 – Mikey 2011-06-29 15:53:56

+0

@cousin_itt我也有同样的问题,但我无法调用onResume() ,请让我知道如何在这种情况下调用OnResume()。 – 2011-08-05 18:47:03

我已经成功地实现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