2017-05-26 59 views
0

當我使用意圖從父活動移動到另一個,然後使用操作欄導航回到父母時,父活動已經失去了我所有的更改和值(作爲用戶),並返回到默認的xml顯示我有它。家長活動繼續從孩子回來時重新設置

我有這些在我的孩子活動的OnCreate:

ActionBar actionBar = getSupportActionBar(); 
actionBar.setHomeButtonEnabled(true); 
actionBar.setDisplayHomeAsUpEnabled(true); 

而且appropiately標記我父活動:

android:parentActivityName=".MainActivity" 

什麼我需要讓存儲或活動之間旅行時記得那些變化?

回答

1

在manifest文件中,你應該設置機器人:launchMode這樣的:

<!-- ACTIVITY --> 
     <activity 
      android:name=".activities.MainActivity" 
      android:configChanges="orientation|screenSize" 
      android:launchMode="singleTask" 
      android:screenOrientation="portrait"/> 

PS:這個鏈接閱讀啓動模式: https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

+0

太好了! 「singletop」發射模式的其他人建議也起作用,但它認爲在閱讀了您提供的材料後,「singleTask」是最合適的發射模式。感謝您的答案,其他信息閱讀:) – Destreation

+0

@Destreation實際上,使用'singleTask'啓動模式應該只用於非常特殊的情況下(比如在HOME屏幕替換中),而不是像這樣的標準導航情況。這裏'singleTop'的使用應該足以返回到'MainActivity'的現有實例。 'singleTask'啓動模式伴隨着一系列奇怪的行爲,可能會在未來造成很大的痛苦。閱讀[提供UP導航](https://developer.android.com/training/implementing-navigation/ancestral.html) –

+0

@DavidWasser:你能解釋一下「奇怪的行爲」嗎? – MrTy

1

有幾個選項來嘗試 -

1)開始startActivityForResult()

2在清單文件中的新的活動),設置父活動android:launchMode="singleTop"

希望它可以幫助

0

當您單擊導航按鈕時,您可能正在創建父母的新實例。一個簡單的方法就是完成你的活動,這樣就可以簡單地恢復後臺堆棧中的任何活動。

事情是這樣的:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     finish(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
}