koin测试结果如下:
org.koin.core.error.NoBeanDefFoundException: No definition found for '<class_name>' has been found. Check your module definitions.
该课程EmailValidatorUtilImpl
实施得很好,
import org.junit.After
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import org.koin.core.context.startKoin
import org.koin.core.context.stopKoin
import org.koin.dsl.module
import org.koin.test.KoinTest
import org.koin.test.inject
class EmailValidatorUtilImpl : EmailValidatorUtil {
private val pattern = Pattern.compile(EMAIL_PATTERN)
private var matcher: Matcher? = null
override fun validateEmail(email: String): Boolean {
matcher = pattern.matcher(email)
return matcher!!.matches()
}
companion object {
private val EMAIL_PATTERN = "^[a-zA-Z0-9#_~!$&'()*+,;=:.\"(),:;<>@\\[\\]\\\\]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$"
}
}
Run Code Online (Sandbox Code Playgroud)
并且,注入 KoinTest 如下:
class EmailValidatorUtilImplTest : KoinTest, …
Run Code Online (Sandbox Code Playgroud) 以下代码段在顺序代码流中将结果返回为“null”。我知道协程可能是异步处理回调的可行解决方案。
fun getUserProperty(path: String): String? {
var result: String? = null
database.child(KEY_USERS).child(getUid()).child(path)
.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(error: DatabaseError) {
Log.e(TAG, "error: $error")
}
override fun onDataChange(snapshot: DataSnapshot) {
Log.w(TAG, "value: ${snapshot.value}")
result = snapshot.value.toString()
}
})
return result
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,协程是否可以帮助等待回调(onDataChange()/onCancelled())的结果?
android callback kotlin firebase-realtime-database kotlin-coroutines
尝试读取 editText 内容时 AlertDialog(Material) 崩溃。
警报对话框:
MaterialAlertDialogBuilder(activity)
.setTitle(title)
.setMessage(message)
.setView(R.layout.dialog_settings_entry)
.setPositiveButton(getString(R.string.text_change)) { dialog, which ->
etUserInput.hint = message
sgr = etUserInput.text.toString() // << crashes here
dialog.dismiss()
}
.setNegativeButton(getString(android.R.string.cancel)) { dialog, _ ->
dialog.dismiss()
}
.show()
Run Code Online (Sandbox Code Playgroud)
单击肯定按钮结果如下:
java.lang.IllegalStateException: etUserInput must not be null
at com.home.profile.SettingsFragment$buildAlertDialog$1.onClick(SettingsFragment.kt:332)
at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
Run Code Online (Sandbox Code Playgroud)
该etUserInput是在一个单独的布局简单EDITTEXT。不确定崩溃原因。希望对它有任何了解或任何有用的材料样本。
android android-edittext illegalstateexception material-dialog
使用 koin-2.0.1 进行 Android 测试,尽管每个测试分别通过,但无法同时测试所有 3 个测试。
class NumberFormatterUtilImplTest : KoinTest {
private val numberFormatterUtil: NumberFormatterUtilImpl by inject()
@Before
fun setUp() {
startKoin { modules(utilsModule) }
}
@Test
fun `does formatter returns two digit faction if supplied one digit value`() {
val result = numberFormatterUtil.getAdjustedCurrencyRate(18.0)
Assert.assertEquals(result, 18.00, 1.0)
}
@Test
fun `does formatter returns two digit faction if supplied multiple digits value`() {
val result = numberFormatterUtil.getAdjustedCurrencyRate(18.12343)
Assert.assertEquals(result, 18.12, 1.0)
}
@Test
fun `does formatter returns rounded two digit faction …
Run Code Online (Sandbox Code Playgroud) 我正在使用单活动模式(每个 UI 的片段)与 Android 的 Jetpack 导航一起进行应用程序开发。每个片段代表一个 UI。有什么简单的方法可以禁用后按动作(软/硬件按钮)?
谢谢。
我的 TextView 有与其关联的 Drawable 图标,如下所示:
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvProfile"
android:drawableStart="@drawable/ic_menu_profile" />
Run Code Online (Sandbox Code Playgroud)
当尝试在运行时对 textView 的可绘制紧凑进行着色/着色时,以下尝试返回 null。但是,android:drawableLeft
返回可绘制实例。
tvProfile.compoundDrawables[0]?.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
Run Code Online (Sandbox Code Playgroud)
想知道有什么解决方案吗android:drawableStart
?
每个时区都有自己的日期/时间格式。比如说,
UK >> dd/MM/yyyy
US >> M/d/yyyy
Run Code Online (Sandbox Code Playgroud)
有关更多信息,https://gist.github.com/mlconnor/1887156
我确信 Android 可能有办法检索默认日期格式。任何人都可以指导什么是最简单的获取方法吗?