kotlin 在 Fragment 中打开新的 Activity

kotlin opening new Activity inside of a Fragment

倒数第二个右大括号出现错误。

错误:具有块主体的函数中需要 'return' 表达式 ('{...}')

我正在尝试从我的碎片(仪表板)中的 ImageButton 打开 Activity (TM)。

class Dashboard : Fragment() {


override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View {

    // Inflate the layout for this fragment
    val view = inflater.inflate(R.layout.fragment_dashboard, container, false)

    view.findViewById<ImageButton>(R.id.card1).setOnClickListener {
        val card1 = Intent(activity, TMs::class.java)
        activity?.startActivity(card1)
    }
}

}

onCreateView 函数 return 创建一个视图。您已经膨胀了 View 对象,只是 return 它。

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View { 
val view = inflater.inflate(R.layout.fragment_dashboard, container, false)

..code..

return view

无论如何,我强烈建议您在 onViewCreated() 中初始化 clickListeners 和任何其他 UI 逻辑。 因此,我们继续逐步创建片段,首先我们在 onCreateView(): View 上“膨胀视图”,然后一旦创建,我们就可以添加 UI 逻辑(作为侦听器)。

看起来像这样:

class Dashboard : Fragment() {

    private lateinit var _view: View

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _view = inflater.inflate(R.layout.fragment_dashboard, container, false)

        return _view
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        view.findViewById<ImageButton>(R.id.card1).setOnClickListener {
            val card1 = Intent(activity, TMs::class.java)
            activity?.startActivity(card1)
        }
    }
}