所以,我已经将Android studio中的一段代码从Java转换为Kotlin,现在我得到了这些错误。
类型不匹配:推断的类型为字符串,但应为正则表达式任务:应用中的app:compiledBugkotlin已完成
class MainActivity : AppCompatActivity() {
lateinit var tvUsername: EditText
lateinit var tvPassword: EditText
lateinit var btnRegister: Button
lateinit var img1: ImageView
lateinit var img2: ImageView
lateinit var img3: ImageView
lateinit var img4: ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tvUsername = findViewById(R.id.et_userName)
this.tvPassword = findViewById(R.id.et_password)
this.btnRegister = findViewById(R.id.btnRegister)
img1 = findViewById(R.id.img1)
img2 = findViewById(R.id.img2)
img3 = findViewById(R.id.img3)
img4 = findViewById(R.id.img4)
tvPassword.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
if (hasLength(s)) {
img1.setImageResource(R.drawable.checked)
} else {
img1.setImageResource(R.drawable.unchecked)
}
if (hasSymbol(s)) {
img4.setImageResource(R.drawable.checked)
} else {
img4.setImageResource(R.drawable.unchecked)
}
if (hasDigit(s)) {
img3.setImageResource(R.drawable.checked)
} else {
img3.setImageResource(R.drawable.unchecked)
}
if (hasUppercase(s)) {
img2.setImageResource(R.drawable.checked)
} else {
img2.setImageResource(R.drawable.unchecked)
}
if (hasLength(s) && hasUppercase(s) && hasDigit(s) && hasSymbol(s)) {
btnRegister.setVisibility(View.VISIBLE)
} else {
btnRegister.setVisibility(View.GONE)
}
}
override fun afterTextChanged(s: Editable) {}
})
}
fun hasLength(value: CharSequence): Boolean {
return value.toString().length >= 8
}
fun hasDigit(value: CharSequence): Boolean {
return value.toString() matches("(.*\\d.*)")
}
fun hasUppercase(value: CharSequence): Boolean {
val s = value.toString()
return s != s.isLowerCase()
}
fun hasSymbol(value: CharSequence): Boolean {
val s = value.toString()
return !s.matches("[A-Za-z0-9 ]*")
}
}
以上是完整的代码。我在hassuppercase()和hasSymbol函数中遇到了问题。请帮忙。
错误为:类型不匹配:推断类型为字符串,但应为Regex任务:应用程序中的app:compiledBugKotlin已完成
文件
字符串。匹配
需要一个正则表达式
对象作为参数。使用字符串。toRegex
创建方法:
s.matches("[A-Za-z0-9 ]*".toRegex())
编辑,例如:
fun hasSymbol(value: String): Boolean {
return !value.matches("[A-Za-z0-9 ]*".toRegex())
}
再编辑一次
对于模式和s!=s、 isLowerCase()
根本没有意义。以下几点应该行得通。
fun hasLength(value: CharSequence): Boolean {
return value.length >= 8
}
fun hasDigit(value: CharSequence): Boolean {
return value matches "(.*\\d.*)".toRegex()
}
fun hasUppercase(value: CharSequence): Boolean {
return value matches "[A-Z]*".toRegex()
}
fun hasSymbol(value: CharSequence): Boolean {
return !(value matches "[A-Za-z0-9 ]*".toRegex())
}
一个kotlin方法,包含一个字符串和一个侦听器(类似于swift中的闭包)参数。 这样叫这个。
我对Kotlin是新来的,这是我的问题: 我使用android studio 3.2.1 kotlin版本:1.2.71 对此有什么想法吗?
我有错误“类型不匹配:推断类型是字符串!但单位是预期的”,但如果我尝试使用快速修复,我会使用该错误进行无限循环,并且“返回类型的'run'不是被覆盖成员[...]的返回类型的子类型”,同时在这些文件中使用此代码: ClockViewModel.kt: ClockFragment.kt: 我希望显示文本并每秒更新一次。
我正在学习如何解析一个JSON,并使用数据将其放入回收视图列表中,我正在片段中完成。这让很多人头疼,也有各种各样的错误。第一个是上下文!这是GroupFragment.kt文件内容: 当我运行这个时,我得到了类型不匹配:推断的类型是GroupsFragment,但上下文!这是意料之中的。 在我的UserListAdapter.kt我试图加载userlist_row,我也找不到这个布局资源,即使文件
大家下午好,我有一个问题,我想知道是什么原因造成的 我的主要活动。kt 视图模型。kt 我想知道为什么会导致类型不匹配,你如何修复这种类型不匹配?(两颗星的线是问题的原因)