通过后退按钮关闭活动时返回意图结果

时间:2013-01-02 11:18:18

标签: android android-intent android-activity

我使用Activity从原始Activity开始新的startActivityForResult(intent, requestCode)。我想在用户按下后退按钮时将数据返回到原始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);
    }
    

很遗憾,他们都没有工作(resultCodeRESULT_OK中不是onActivityResult()。这样做的正确方法是什么?谢谢!

5 个答案:

答案 0 :(得分:23)

试试这个:

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

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

答案 1 :(得分:7)

由于这个问题仍然引起关注,我发布的答案比我两年前接受的答案更正确,感谢MasterGauravtip

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

    super.onBackPressed();
}

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

使用startActivityForResult(intent, requestCode)

从原始活动中开始新的活动

当用户按下后退按钮时想要将数据返回到原始Activity,所以当返回原始Activity时。

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

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

如果你想从新开放的活动中取回结果只是覆盖

onActivityResult(int requestCode, int resultCode, Intent data)来自原始活动的方法

@Override

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

    super.onActivityResult(requestCode, resultCode, data);

}

答案 4 :(得分:0)

尝试一下:

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

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