2013-01-02 109 views
13

我使用startActivityForResult(intent, requestCode)從原始Activity開始新的Activity。我想在用戶按下後退按鈕時將數據返回到原來的Activity,所以當返回到原來的Activity時。我嘗試了兩種方法:當返回按鈕關閉活動時返回意圖結果

  • 覆蓋onBackPressed()

    @Override 
    public void onBackPressed() { 
        super.onBackPressed(); 
    
        Intent intent = new Intent(); 
        intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
        setResult(RESULT_OK, intent); 
    } 
    
  • 覆蓋onPause()

    @Override 
    protected void onPause() { 
        super.onPause(); 
    
        Intent intent = new Intent(); 
        intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
        setResult(RESULT_OK, intent); 
    } 
    

不幸的是,他們沒有工作(resultCodeonActivityResult()RESULT_OK) 。什麼是正確的方法來做到這一點?謝謝!

回答

7

覆蓋

onActivityResult(int requestCode, int resultCode, Intent data)方法,因爲這個問題是仍然得到關注,我發佈一個更正確的答案比兩年前我接受的要好,謝謝MasterGauravtip

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(); 
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
    setResult(RESULT_OK, intent); 

    super.onBackPressed(); 
} 
1

試試這個:希望當用戶將數據恢復到原來的活動時

@Override 
public void onBackPressed() { 
    // super.onBackPressed(); 

    Intent intent = new Intent(); 
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
    setResult(RESULT_OK, intent); 
    finish(); 
} 
+0

不幸的是,這不起作用,'requestCode'仍然不是'RESULT_OK'。 – WonderCsabo

23

試試這個按下後退按鈕,所以當返回到原來的Activity時。

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 

    Intent intent = new Intent(); 
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
    setResult(RESULT_OK, intent); 
} 

,如果你想getback從新近開放的活動導致剛剛從原來的活動

@Override 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 

} 
+0

當然,我也想嘗試其他答案。 ;) – WonderCsabo

+0

@WonderCsabo謝謝。 :) –

+0

@pratik:然後在父級活動,你會收到意圖onResume()或onNewIntent()? – Behnam

0

開始一個新的活動從原來的活動與startActivityForResult(intent, requestCode)

public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      onBackPressed(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
+0

其實我做了完全一樣的事情,就像我在OP中寫的一樣。這不起作用,但Pratik的建議起作用。 – WonderCsabo