1. ホーム
  2. android

[解決済み] あるアクティビティから前のアクティビティに値を渡す方法

2022-12-07 23:21:14

質問

ある画面から前の画面に値を渡すにはどうしたらよいでしょうか。

このようなケースを考えてみましょう。2つのアクティビティがあります。最初の画面には1つの TextView とボタンがあり、2つ目のアクティビティには1つの EditText とボタンがあります。

最初のボタンをクリックすると、2番目のアクティビティに移動し、ここでユーザーはテキストボックスに何かを入力する必要があります。2番目の画面からボタンを押すと、テキストボックスの値が1番目のアクティビティに移動し、それが1番目のアクティビティに表示されるはずです。 TextView .

どのように解決するのですか?

あるアクティビティで実行されたアクションを別のアクティビティで取得するには、3つのステップが必要です。

サブアクティビティとしてセカンダリアクティビティ(「Edit Text」アクティビティ)を起動するには、次のようにします。 startActivityForResult で起動します。

Intent i = new Intent(this,TextEntryActivity.class);    
startActivityForResult(i, STATIC_INTEGER_VALUE);

サブアクティビティ内では、ユーザーがボタンをクリックしたときに Activity を閉じるのではなく、新しい Intent を作成し、その extras bundle に入力されたテキスト値を含める必要があります。それを親呼び出しに戻すには setResult を呼び出す前に finish を呼び出して二次アクティビティを終了させる。

Intent resultIntent = new Intent();
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, enteredTextValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();

最後は呼び出し側のActivityになります。オーバーライド onActivityResult をオーバーライドして、テキスト入力Activityからのコールバックを待ちます。返されたIntentからextraを取得し、表示すべきテキスト値を取得します。

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {     
  super.onActivityResult(requestCode, resultCode, data); 
  switch(requestCode) { 
    case (STATIC_INTEGER_VALUE) : { 
      if (resultCode == Activity.RESULT_OK) { 
      String newText = data.getStringExtra(PUBLIC_STATIC_STRING_IDENTIFIER);
      // TODO Update your TextView.
      } 
      break; 
    } 
  } 
}