2011-12-17 118 views
2

我跟着this教程爲我的應用程序。Maintainig兒童活動狀態TabGroupActivity

我有: 表1:Tabgroupactivity1>(startchildactivity)MainActivty>(startchildactivity)ListActivity>(startchildactivity)DetailActivity

同樣我有另外兩個選項卡。

事情是,當我從以下任何活動返回到前一個活動(前一個)重新啓動。

我也試圖startchild活動與SINGLE_TOP和SINGLE_TASK但在這個只有一次我可以順利通過流

第二次就不會調用下面(下一個/子)活動

那麼我怎樣才能保持當前的活動狀態,同時它要求兒童活動並返回?

我使用以下listactivty意向的onclick:

Intent myintent = new Intent(getParent(),Second.class); 
myintent.putExtra("id",favadapter.getItem(position).id.toString()); 
TabGroupActivity parentFav = (TabGroupActivity)getParent(); 
parentFav.startChildActivity("FavActivity", myintent); 
+0

粘貼您的正確理解代碼。 – RobinHood

+0

你有沒有解決方案 –

回答

2

其實TabGroupActivity在Android 2.1及2.2的一個問題,而不是正確地從堆棧中刪除的活動使我們的情況下重新啓動每次。

爲了克服這個問題,我們使用SINGLE_TOP和SINGLE_TASK,甚至它會導致另一個問題只有一個實例不運行第二次,因爲在孩子完成,我們不喜歡這樣,

Intent lastIntent = manager.getActivity(lastId).getIntent(); 
     Window newWindow = manager.startActivity(lastId, lastIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)); 
     setContentView(newWindow.getDecorView()); 

意味着它刪除所有lastID意圖和帶上最新的一個,因爲你的lastId(在啓動活動.startChildActivity("FavActivity", myintent);時使用)對於多個實例是相同的。

爲了讓您的孩子活動第二次運行或多次使用動態意圖ID啓動兒童活動。

例如,

Intent myintent = new Intent(getParent(),Second.class); 
myintent.putExtra("id",favadapter.getItem(position).id.toString()); 
TabGroupActivity parentFav = (TabGroupActivity)getParent(); 
parentFav.startChildActivity("FavActivity"+System.currentTimemillis(), myintent); 
+0

我已經在一個月前使用過這個問題: String newId = Id +「」+ Math.random()* 1000;窗口窗口= getLocalActivityManager()。startActivity(newId,intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)); 有時候,這也給我大屏幕的空白屏幕。:( – Hanry