Androidのメインアクティビティにデータを送り返す 質問する

Androidのメインアクティビティにデータを送り返す 質問する

メイン アクティビティと子アクティビティの 2 つのアクティビティがあります。
メイン アクティビティのボタンを押すと、子アクティビティが起動します。

ここで、メイン画面にいくつかのデータを返送したいと思います。Bundle クラスを使用しましたが、機能しません。ランタイム例外がいくつかスローされます。

これに対する解決策はありますか?

ベストアンサー1

状況に応じて、目的を達成する方法はいくつかあります。

最も一般的なシナリオ(あなたのシナリオもそうでしょう)は、子アクティビティを使用してユーザー入力を取得する場合です。たとえば、リストから連絡先を選択したり、ダイアログボックスにデータを入力したりする場合です。この場合、startActivityForResultお子様のアクティビティを開始します。

これは、メインアクティビティにデータを送り返すためのパイプラインを提供します。setResultsetResult メソッドは、int の結果値と、呼び出し元の Activity に返される Intent を受け取ります。

Intent resultIntent = new Intent();
// TODO Add extras or a data URI to this intent as appropriate.
resultIntent.putExtra("some_key", "String data"); 
setResult(Activity.RESULT_OK, resultIntent);
finish();

呼び出し元の Activity で返されたデータにアクセスするには、オーバーライドしますonActivityResult。requestCode は呼び出しで渡された整数に対応しstartActivityForResult、resultCode とデータ インテントは子 Activity から返されます。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  switch(requestCode) {
    case (MY_CHILD_ACTIVITY) : {
      if (resultCode == Activity.RESULT_OK) {
        // TODO Extract the data returned from the child Activity.
        String returnValue = data.getStringExtra("some_key");
      }
      break;
    } 
  }
}

おすすめ記事