【问题标题】:Kotlin: setOnClickListener on Fragment Crashes appKotlin:片段崩溃应用程序上的 setOnClickListener
【发布时间】:2020-03-14 10:12:50
【问题描述】:

我有一个带按钮的 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

请引导我完成此操作。谢谢!

Logcat:

在 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

【问题讨论】:

  • 你在 logcat 中的错误是什么?
  • 听起来你没有使用合成导入并且你没有用findViewById初始化calculateButton
  • onViewCreated覆盖方法中调用setOnClickListener

标签: android android-studio android-fragments kotlin android-tabbed-activity


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    相关资源
    最近更新 更多