いつもお世話になっております。
FragmentからAcitivityにIntentを使って、指定した文字列を送りたいと考えております。
どういった設計でどういった遷移をするのか分かりずらいかと思いましたので、下図を作成しました。(実際の用途としては少し異なっておりますが、やりたい事としては下図と同じです。)
自分がやったプログラムは下記のように書いていました。
TestListFragment.java
Java
1intent = new Intent(getActivity().getApplicationContext(), MainActivity.class); 2//インテントの引数に文字列を設置 3intent.putExtra("OtherData","テスト"); 4//画面遷移を実行 5startActivity(intent); 6
上記だと出来ているのですが、戻るボタンを押すとSubActivityにいったり、表示に2秒も掛かってたりとマイナスばかりでどうにか変更できないかと考えた末に、すでに表示されていたActivityに値を渡すというやり方に目を向けました。
色々調べていく内に二つやり方があるみたいですね。
一つ目はFragmentから直接Intentを返すやり方と、二つ目は親のActivityに値を渡して親でIntentを返すやり方です。
一つ目は以下のように書きました。
Java
1//MainActivityに値を投げるためにインテントを宣言 2intent = new Intent(getActivity().getApplicationContext(), MainActivity.class); 3//インテントの引数に文字列を設置 4intent.putExtra("OtherData","テスト"); 5intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 6intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 7//画面遷移を実行 8getActivity()setResult(RESULT_OK, intent); 9 10getActivity().finish();
二つ目のやり方ですが、親に値を渡すときにリスナーを使用して押されたら親側で検知して、一つ目の書き方と同じように処理を行いました。
ちゃんと処理が通っているのも確認が出来ていたのですが、どちらのやり方でやってもMainActivityでonActivityResultに入りませんでした、、
そもそも書き方が違うのか、見当違いのことをやっているのか、気になる点等なんでも構いませんのでご教授頂ければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。