首页 > 解决方案 > Kotlin:片段崩溃应用程序上的 setOnClickListener

问题描述

我有一个带有按钮的 MainActivity,该按钮使用FragmentOneActivityfragment_one.xml调用tabbedActivity。我已将我的按钮放在fragment_one.xml并在FragmentOneActivity上执行 Toast 。这是我的代码:

class Anct3bActivity : Fragment() {
override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View {
    val v : View = inflater.inflate(R.layout.fragment_anct3b, container, false)

    calculateNutCountButton.setOnClickListener {
        Toast.makeText(
            activity,"Success.",
            Toast.LENGTH_SHORT).show()
    }
    return v
}

}

我的应用程序启动正常,但是当单击调用tabbedActivity的按钮时,我的应用程序崩溃。但是,当我从FragmentOneActivity中删除calculateButton.setOnClickListener时, tabbedActivity工作正常。

我还尝试将calculateButton.setOnClickListener放在tabbedActivity上,但它仍然崩溃。

这是我第一次冒险进入选项卡式活动,但我不能有人使用setOnClickLIsener

请引导我完成这个。谢谢!

日志猫:

在 FragmentOneActivity 上:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

在 tabbedActivity 上

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.demicode.ccdofieldkit/com.a.fr.meActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

标签: androidandroid-studioandroid-fragmentskotlinandroid-tabbed-activity

解决方案


在 onViewCreated 中设置您的点击监听器,在 onCreateView 中,您在视图可以设置之前调用 onClick 监听器。

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    calculateNutCountButton.setOnClickListener {
        Toast.makeText(
            activity,"Success.",
            Toast.LENGTH_SHORT).show()
    }
}

推荐阅读