19

Activityでオリジナルから新たActivityにスタートstartActivityForResult(intent, requestCode)Activityユーザーが戻るボタンを押したときにデータを元に戻したいので、元に戻るとActivity. 私は2つの方法を試しました:

  • オーバーライド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 に答える
0

元のアクティビティから新しいアクティビティを開始しますstartActivityForResult(intent, requestCode)

ユーザーが戻るボタンを押したときにデータを元のアクティビティに戻したい場合、つまり元のアクティビティに戻った場合。

@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

これを試して:

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

これを試して:

@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 に答える