知りたいこと
FragmentAからFragmentB(DialogFragmentを継承)を呼び出す際にapply関数を使用した時のみエラーが発生しました。その理由を知りたいです。
問題が発生するソースコード
FragmentA
1class FirstFragment : Fragment() { 2 3 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? { 4 val view = inflater.inflate(R.layout.fragment_first, container, false) 5 val floatButton = view.findViewById<FloatingActionButton>(R.id.floatingActionButton) 6 floatButton.setOnClickListener { 7 MyCustomDialog().apply { 8 show(childFragmentManager, "MyCustomDialog") 9 } 10 } 11 return view 12 } 13 14}
FragmentB
1class MyCustomDialog : DialogFragment() { 2 override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { 3 super.onCreateDialog(savedInstanceState) 4 5 val view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_view,null) 6 return AlertDialog.Builder(requireContext()) 7 .setView(view) 8 .create() 9 } 10}
エラーメッセージ
java.lang.IllegalStateException: Fragment MyCustomDialog{xxx} (xxx)} has not been attached yet.
問題が発生しないソースコード
FragmentA
1 // 変更箇所のみ 2 floatButton.setOnClickListener { 3 val dialog = MyCustomDialog() 4 dialog.show(childFragmentManager,"MyCustomDialog") 5 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/07 12:12