二つのActivity A,B間でデータの受け渡しをしたいです。
データはMyDataというクラスを作り変数がまとめられています。
Aは閲覧、Bは編集用のActivityです。
AでMyDataクラスのインスタンスを作成し編集に移る際にはそれをintentで渡しています。
困っているのがBで編集を終えた後Aに反映させる方法です。
onRestart()内で編集されたデータを表示しようとしています。しかしBで編集した内容が反映されていません。
Bでインスタンス化していないからAとBで同じメモリ領域のdataを参照してAのdataはBで編集したものになっているのかなと思ったのですがそうではないのでしょうか?
BからAにdataを受け渡す必要があるのであればどのような方法が適切なのでしょうか?
ご教授よろしくお願いします。
class AActivity : AppCompatActivity() { companion object { val DATA = "DATA" } var data = MyData() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } //データ編集へ fun button_simulation_changeSpecified() { val intent = Intent(this@AActivity, BActivity::class.java) intent.putExtra(DATA, data) startActivity(intent) } override fun onRestart() { super.onRestart() /*編集されたデータを表示*/ } }
class BActivity : AppCompatActivity() { lateinit var data: MyData override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) data = intent.getSerializableExtra(AActivity.DATA) as Data } //変更を終了 fun back() { /*データを編集後finish()*/ } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/10 04:50