2011-04-20 109 views
1

我的應用程序上有一個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

回答

0

我希望你有這個方法onResume()寫你的更新數據的代碼。

2

我也有這個問題。

我在使用基於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

1

我已經成功地實現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。

0

我發現onFocusChanged(boolean hasFocus)非常適合ActivityGroup等情況。即使onResume()沒有,這也會觸發。我使用它的幾個我的應用程序有TabHost s和ActivityGroup s。在這裏,您可以強制刷新並確保當您的Activity重新獲得焦點時它總是被解僱。

1
((ReportActivity)getLocalActivityManager().getActivity("ReportActivity")).onResume(); 

ReportActivity是名字要備份活動 PS:v.getContext();

只返回活動組,它不能調用子活動onResume