android-fragments Kotlin打开片段内的新Activity

hgb9j2n6  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(220)

我在倒数第二个右大括号上得到一个错误。
错误:在具有块体(“{...}”)的函数中需要“return”表达式
我正在尝试从我的片段( Jmeter 板)中的ImageButton打开活动(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)
    }
}

}

falq053o

falq053o1#

函数onCreateView返回一个视图。你已经扩大了视图对象,只需返回它。

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()上:视图,然后一旦创建了它,我们就可以添加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)
        }
    }
}

相关问题