2011-11-22 151 views
2

我有一個問題困擾着我。我怎樣才能完成活動C並開始它的父母。但棘手的部分是,我可以從20個其他活動開始活動C.這個想法是打開正確的一個,當我打電話完成對C.另一件事是,我有tabhost,哪些孩子打開活動C.Android完成當前活動並啓動父項活動

任何建議如何實現這一目標?

+0

活動c有tabhost在它或一些主要活動包含tabhost和從這些標籤活動活動c你打電話! – vikky

+1

您可以使用ActivityGroup(包含並運行多個嵌入式活動的屏幕)擴展您的活動,您可以在其中完成活動C並清除所有前期活動的列表,以使您的初始活動再次重新啓動。如果它是tabhost,請查找TabGroupActivity類示例 – 2011-11-22 12:45:40

+0

第二個,活動C由tabhost中的活動調用。 –

回答

1

我壓根兒是這樣的:

Intent intent = new Intent(); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
finish(); 

這並獲得成功。

1

取決於您的活動堆棧,如果您的當前正好在父活動的頂部,您可以完成當前的活動並且它將轉到之前的活動。如果要清除所有活動堆棧,並開始了新的活動嘗試

Intent intent1 = new Intent(context, activity.class); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent1); 

其清除棧,並開始了新的,如果你有超過父堆棧活動要完成所有使用和重新開始的父母。

+0

我想回到之前的活動,我忘了提及我想清除歷史,但是我應該放置什麼而不是'activity.class'? –

+0

您想要作爲班級重定向的活動名稱 –

2
在活動Ç

保存下列變量:

Class parent = ParentActivityClass.class; 

覆蓋:

public void onBackPressed(){ 
    //create an intent like 
    Intent i = new Intent(this, parent); 
    startActivity(i); 
    //add extras to intent if needed 
    this.finish(); 
} 

請注意,這可能會創建一個新的父活動。如果這可能會產生問題,則由您來處理這種情況。

另一種解決方案是在啓動新活動時完成彼此的子活動。這將確保在你的籌碼中,你將始終擁有低於兒童活動的家長。