【问题标题】:Parameter specified as non-null is null with BottomSheetDialog指定为非 null 的参数在 BottomSheetDialog 为 null
【发布时间】:2021-12-31 19:07:03
【问题描述】:

当没有可用的互联网时,我正在尝试显示 bottomSheetDialog。我使用的代码是

    private fun setupBottomSheetDialog() {
    bottomSheetDialog =
        object : BottomSheetDialog(requireContext(), R.style.BottomSheetDialogTheme) {
            override fun onCreate(savedInstanceState: Bundle) {
                super.onCreate(savedInstanceState)
                setOnKeyListener { _: DialogInterface?, keyCode: Int, event: KeyEvent ->
                    if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) {
                        // Back key is pressed
                        bottomSheetDialog.dismiss() // Optional
                        requireActivity().moveTaskToBack(true) //exit the app when press back
                        requireActivity().finish()
                        return@setOnKeyListener true
                    }
                    true
                }
            }
        }
    bottomSheetDialog.setContentView(R.layout.bottomsheet_no_internet)
    bottomSheetDialog.setCancelable(false)
}

@SuppressLint("NotifyDataSetChanged")
private fun showBottomSheetDialog() {
    bottomSheetDialog = BottomSheetDialog(requireContext(), R.style.BottomSheetDialogTheme)
    bottomSheetDialog.setContentView(R.layout.bottomsheet_no_internet)
    if (CheckNetwork.isInternetAvailable(requireActivity())) {
        bottomSheetDialog.dismiss()
    } else {
        setupBottomSheetDialog()
    }
    /* Try Again Button */
    val buttonNoInternet = bottomSheetDialog.findViewById<Button>(R.id.buttonAgain)
    buttonNoInternet?.setOnClickListener {
        if (CheckNetwork.isInternetAvailable(requireActivity())) {
            adapter.notifyDataSetChanged()
            bottomSheetDialog.dismiss()
        } else {
            bottomSheetDialog.dismiss()
            adapter.notifyDataSetChanged()
            bottomSheetDialog.show()
        }
    }
}

    override fun onResume() {
    super.onResume()
    if (CheckNetwork.isInternetAvailable(requireActivity())) {
        bottomSheetDialog.dismiss()
    } else {
        bottomSheetDialog.show()
    }
}

我遇到的问题在于 onResume() mehoud。我得到的错误信息是

原因:java.lang.NullPointerException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkNotNullParameter,参数savedInstanceState 在 com.moataz.afternoonhadeeth.ui.view.fragment.HomeFragment$setupBottomSheetDialog$1.onCreate(未知来源:2) 在 android.app.Dialog.dispatchOnCreate(Dialog.java:616) 在 android.app.Dialog.show(Dialog.java:460) 在 com.moataz.afternoonhadeeth.ui.view.fragment.HomeFragment.onResume(HomeFragment.kt:143)

在错误消息的顶部

java.lang.RuntimeException: Unable to resume activity {com.moataz.afternoonhadeeth/com.moataz.afternoonhadeeth.ui.view.activity.MainActivity}: java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter savedInstanceState

注意:代码是否可以在 Java 中正常工作。但是当我将它与 kotlin 一起使用时,它会给我错误。任何想法如何解决这个问题?

【问题讨论】:

    标签: java android kotlin


    【解决方案1】:

    好的,我找到了问题所在。我应该在底部对话框的创建方法中添加savedInstanceState: Bundle?。如果有人想知道如何在他的应用程序中正确使用 BottomDialog,我将把问题留在这里。 祝你有美好的一天。

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多