当前位置: 首页 > 知识库问答 >
问题:

无法推断此参数的类型,请显式指定它?

江德海
2023-03-14

我最近使用Kotlin开发了Android应用程序,但我收到以下错误

无法推断此参数的类型。请明确指定

在我的课堂下面,我收到了错误。

class AddBookingActivity : AppCompatActivity() {
    @BindView(R.id.attendees_recycler_view)
    internal var mAttendeeRecyclerView: RecyclerView? = null

    @BindView(R.id.start_time_edit_text)
    internal var mStartTime: EditText? = null
    @BindView(R.id.end_time_edit_text)
    internal var mEndTime: EditText? = null

    private var mAttendeeName: EditText? = null
    private var mAttendeeEmail: EditText? = null
    private var mAttendeePhoneNumber: EditText? = null

    private var mAttendeeAdapter: AttendeeAdapter? = null
    private var mAlertDialog: AlertDialog? = null

    private val mAttendeeItemList = ArrayList<AttendeeItem>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_add_booking)

        ButterKnife.bind(this)

        mAttendeeRecyclerView!!.layoutManager = LinearLayoutManager(this)
        mAttendeeAdapter = AttendeeAdapter(this)
        mAttendeeAdapter!!.setAttendeeList(mAttendeeItemList)
        mAttendeeRecyclerView!!.adapter = mAttendeeAdapter

    }

    @OnClick(R.id.toolbar_back_button)
    internal fun onBackButtonClicked() {
        onBackPressed()
    }

    @OnClick(R.id.start_time_edit_text)
    internal fun onStartTimeClicked() {
        showTimePickerDialog(mStartTime)
    }

    @OnClick(R.id.end_time_edit_text)
    internal fun onEndTimeClicked() {
        showTimePickerDialog(mEndTime)
    }

    @OnClick(R.id.fab_add_attendee)
    internal fun onAddAttendeeClicked() {

        val inflater = this.layoutInflater
        val dialogView = inflater.inflate(R.layout.add_attendee_view, null)

        mAttendeeName = dialogView.findViewById(R.id.attendee_name)
        mAttendeeEmail = dialogView.findViewById(R.id.attendee_email)
        mAttendeePhoneNumber = dialogView.findViewById(R.id.attendee_phone_number)

        mAlertDialog = AlertDialog.Builder(this, R.style.AlertDialog)
            .setTitle("Input attendee details")
            .setPositiveButton("Add") { dialog, which ->
                val item = AttendeeItem()
                item.name = mAttendeeName!!.text.toString()
                item.email = mAttendeeEmail!!.text.toString()
                item.phoneNumber = mAttendeePhoneNumber!!.text.toString()

                mAttendeeItemList.add(item)
                mAttendeeAdapter!!.setAttendeeList(mAttendeeItemList)
                mAttendeeAdapter!!.notifyItemInserted(mAttendeeItemList.size)
            }
            .setNegativeButton("Cancel", null)
            .setView(dialogView).create()

        mAlertDialog!!.show()
    }

    private fun showTimePickerDialog(editText: EditText?) {
        val myCalender = Calendar.getInstance()
        val hour = myCalender.get(Calendar.HOUR_OF_DAY)
        val minute = myCalender.get(Calendar.MINUTE)


        @SuppressLint("DefaultLocale")
        val myTimeListener = { view, hourOfDay, minute1 ->
            if (view.isShown()) {
                myCalender.set(Calendar.HOUR_OF_DAY, hourOfDay)
                myCalender.set(Calendar.MINUTE, minute1)
                editText!!.setText(String.format(String.format("%s:%s", hourOfDay.toString(), minute1.toString())))
            }
        }
        val timePickerDialog = TimePickerDialog(this, android.R.style.Theme_Holo_Light_Dialog_NoActionBar, myTimeListener, hour, minute, true)
        timePickerDialog.setTitle("Choose hour:")
        timePickerDialog.window!!.setBackgroundDrawableResource(android.R.color.transparent)
        timePickerDialog.show()
    }
}

共有1个答案

周伟泽
2023-03-14

您必须指定帮助Kotlin编译器的接口:

@SuppressLint("DefaultLocale")
val myTimeListener = TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute1 ->
    if (view.isShown()) {
        myCalender.set(Calendar.HOUR_OF_DAY, hourOfDay)
        myCalender.set(Calendar.MINUTE, minute1)
        editText!!.setText(String.format(String.format("%s:%s", hourOfDay.toString(), minute1.toString())))
    }
}
 类似资料:
  • 我正在尝试用科特林编写一个Vaadin应用程序。对于数据绑定,Vaadin 8 现在提供了类型安全数据绑定的可能性。在科特林,我本来以为会有这样的工作: 我在这里收到以下错误消息: 我尝试通过显式指定类型参数: 但是这导致了错误消息(和其他sytax错误,所以我没有遵循这种方法) 我的第二种方法是尝试直接传递Kotlin属性访问器,但错误消息与第一种方法相同: 最后一个方法是尝试使用扩展方法并使一

  • 我的分类测试应用程序有一个问题,我使用了一个比较器。我收到一条信息: 线程“主”java.lang 中的异常:未解决的编译问题:无法推断排序器的类型参数 对于该代码: 分拣机类: 可比接口: id比较器类: 比较器接口: 这样用有什么错?我怎样才能做得更好?

  • 我仍然在玩我的日历,我已经设法将 https://github.com/SundeepK/CompactCalendarView 整合到我的一个片段中。只剩下一个错误,我做了一些研究,其他人也遇到了问题,例如使用ArrayList 示例代码: IDE说: 注:C:...\Uebersicht.java使用或覆盖不推荐使用的API。注意:用-Xlint:deprecation重新编译以获得详细信息。

  • 我是Android开发新手(6个月前开始),想从Java转向静态编程语言。我已经将我的项目转换为静态编程语言,并修复了除一个问题之外的所有问题,但我不知道如何修复它。 我正在尝试检索JSONArray(如JsonManager类中所示)并通过方法调用在名为DataDisplayPage的第二个类中使用检索到的数据。 我收到以下控制台错误,发生在第二类的这一行:

  • 我需要 Kotlin 中的一个集合来仅包含实现给定接口的元素。 例如:包含动物集合的地图: 通过阅读文档、博客和SO问题,我编写了使用Generics in关键字的代码: 现在我想在Test类中添加一个读取“data”内容的方法,例如将其打印到控制台: 如果我这样做,我会遇到编译错误: 我的解决方案是强制我的动物进入一个ArrayList 但是我不确定这是编写这种代码的最好方式。有没有更好的方式告

  • 我试着做一个ArrayList,包含另一个类的对象,一个名字,还有turn。类似于python字典的东西。 所以我做了一个有三个值的类。 我试图在主类的构造函数中调用它,如下所示: 但它引发了一个错误:无法推断ArrayList的类型参数