19

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

不幸的是,他们都没有工作(resultCode不在RESULT_OKonActivityResult()。这样做的正确方法是什么?谢谢!

4

5 回答 5

24

试试这个 :

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

    Intent intent = new Intent();
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
    setResult(RESULT_OK, intent);
    finish();
}
于 2013-01-02T11:21:22.477 回答
10

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

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

    super.onBackPressed();
}
于 2015-06-01T18:00:52.197 回答
0

试试这个:

public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            onBackPressed();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
于 2013-01-02T11:21:15.990 回答
0

从原来的 Activity 开始一个新的 ActivitystartActivityForResult(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);

}
于 2013-01-02T11:25:45.130 回答
0

试试这个:

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

    Intent intent = new Intent();
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
    setResult(RESULT_OK, intent);
    finish();
}
于 2019-11-10T15:58:33.303 回答