70682


## 問題点

RegistActivityからMainActivityにデータを渡したいのですが反映されません。  
原因をいくつか考えていますが、直りませんでした。

  1. ”startActivity(intent)の場所”がMainActivityにあるため
  2. intent.putExtraの中身が違う。第一引数と第二引数の意味があまり理解できていません

また、一般的なintentの使い方は以下の感じだと認識しています。

===遷移元(RegistActivity)===  
Intent intent = new Intent(RegistActivity(),MainActivity.class);  
intent.putExtra("value", strAge);  
startActivity(intent);

===遷移先(MainActivity)===  
Intent intent = getIntent();  
String value = intent.getStringExtra("value");

## 自分のコード

RegistActivity

[code]

     @Override
                public void onClick(View view2) {
    
                    //Intentクラスのオブジェクトを生成
                    Intent intent = new Intent();
                    int id = view2.getId();
    
                    TextView ageForm = findViewById(R.id.ageForm);
                    String strAge;
                    strAge = ageForm.getText().toString();
    
                    intent.putExtra("value", strAge);
    
                    RegistActivity.this.finish();
                }
    
[/code]

MainActivity

[code]

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //activity_mainのレイアウトをContentViewに設定
            setContentView(R.layout.activity_main);
    
            TextView ageForm = this.findViewById(R.id.ageForm);
            Intent intent = getIntent();
            String strAge = intent.getStringExtra("value");
            ageForm.setText(strAge);
    
            // activity_main内のregistButtonを取得
            Button goRegistButton = findViewById(R.id.regist);
            //ボタンがクリックされた時の処理を追加
            goRegistButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view2) {
                    //Intentを利用して他のアクティビティに遷移する
                    Intent intent = new Intent(MainActivity.this, RegistActivity.class);
    
                    startActivity(intent);
                }
            });
    }
    
[/code]


CC BY-SA 4.0
2020-09-23T19:21:40.520
70646
2020-09-25T03:00:01.950
2020-09-24T00:12:59.107
3060
40944
question
java android
Activity間でのデータの受け渡しが反映されません。


おそらく、MainActivityからRegistActivityを開き、RegistActivityでの結果をMainActivityで受け取りたいという主旨だと思います。  
その場合は、MainActivityでRegistActivityを開く際に`startActivity`ではなく、`startActivityForResult`を使用する必要があります。

  * MainActivityで`startActivityForResult`でRegistActivityを開く
  * RegistActivityで`finish`する前に`setResult`で結果をセットしておく
  * MainActivityでは`@overrride onActivityResult`コールバックで結果を受け取る

コードを全部書くと長いので、参考URL等を確認してみてください。

# 参考

  * <https://android.keicode.com/basics/activity-start-new-activity.php>
  * <https://developer.android.com/training/basics/intents/result?hl=ja>

なお現在はActivity Result
APIという新しいAPIが出ているようですが、おそらく上記従来通りのやり方を理解してから挑んだほうがよいかと思います。


CC BY-SA 4.0
2020-09-25T03:00:01.950
70682
2020-09-25T03:00:01.950
9608
70646
answer