当返回按钮关闭活动时返回意图结果

问题描述:

我使用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) 。什么是正确的方法来做到这一点?谢谢!

覆盖

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(); 
} 

试试这个:希望当用户将数据恢复到原来的活动时

@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

试试这个按下后退按钮,所以当返回到原来的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

开始一个新的活动从原来的活动与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