Closed4

fragment から親の activity を操作する

tkttkt
TopFragment.kt
class TopFragment : Fragment() {
    private lateinit var binding: FragmentTopBinding
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        binding = FragmentTopBinding.inflate(inflater)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        // activity で親の activity が取得できる
        val button = activity!!.findViewById<AppCompatButton>(R.id.sampleButton)
    }
}
tkttkt

findViewById がぬるぽで落ちて何かと思っていたら、
複数サイズ用にそれぞれ activity を用意していて、
そのうちの1つのボタンに sampleButton の id を付与していなかった。
それを踏んだときに落ちるようになっていたみたい。

tkttkt
requireActivity().let {
    if (it is Parent) {
          it.parentMethod()
    }
}

こっちのほうが圧倒的に良さそう

このスクラップは2021/04/06にクローズされました