2015-04-30 28 views
3

我有一個活動A,我用一些附加內容啓動(即將一些數據放到啓動Activity的Intent中)。從這個活動中,我啓動另一個活動B.問題是,當我從B回到A時,通過調用finish(),一個Activity的getIntent()方法返回一個不包含額外內容的Intent。 所以,我的問題是:這是正常的行爲?是否有某種方式可以表示我希望它保留與之前開始的Intent相關的活動A. 哦,請注意,我已覆蓋Activity A中的onSaveInstanceState()。Activity.getIntent()從孩子回來時沒有其他額外活動

編輯: 我不再在我的設備上遇到此行爲。而且我還沒有改變代碼中的任何東西。我正在使用3年前的設備進行測試。我想知道這是否可能是由設備上的故障引起的?

+1

看到這個答案http://stackoverflow.com/questions/20558689/back-to-previous-activity -with意圖/ 20558774 S = 18 |?0.1089#20558774 – codeMagic

回答

3

我明白了。這個問題只發生在我點擊ActionBar的後退箭頭時,而不是當我按下設備的後退按鈕時。因爲當按下「後退」按鈕時,Activity會調用finish()方法,並且應用程序通常返回到已創建的Activity A實例,但默認情況下單擊ActionBar的後退箭頭時,Activity B不會調用finish()方法由於Android橫向導航功能,它創建了活動A的新實例。因此,解決辦法是重寫ActionBar的後退箭頭點擊功能就像這樣(方法添加到活動B):

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    int itemId = menuItem.getItemId(); 
    if (itemId == android.R.id.home) { 
     onBackPressed(); 
     return true; 
    } 
    return super.onOptionsItemSelected(menuItem); 
} 
1

這是正常行爲嗎?

是的。以startActivityForResult開始B,並在A中覆蓋onActivityResult。在完成B呼叫setResult(int, intent)之前,填寫您想要返回到A的數據的意圖。onActivityResult獲得與第三個參數相同的意圖。

1

是行爲是正常的。如果你想從一個Activity Y開始一個Activity X並從X獲得一些數據並返回到Y,那麼你必須使用onActivityResult()方法 在創建intent並將數據放入你的意圖之後的Activity X中需要做以下操作

setResult(RESUKT_OK,i);

`