【发布时间】:2021-04-02 12:27:30
【问题描述】:
我需要在 Room 数据库中输入一些值。为此,我需要将用户输入的任何内容转换为 Double 和 Long。由于某种原因,每次我尝试执行此操作时应用程序都会崩溃。我相当确定问题出在标有//Need to fix 的两个变量中,因为我尝试将它们初始化为0,之后应用程序运行良好。如果需要,我很乐意提供更多信息。这可能是什么问题?
这是代码:
override fun onResume() {
super.onResume()
var transacType = false
var transacAmount = binding.amountInput.text.toString().toDouble() //Need to fix
var transacDate: Long = binding.pickedDate.text.toString().toLong() //Need to fix
var transacCategory: String = "N"
val duration = Toast.LENGTH_SHORT
...
binding.floatingActionButton.setOnClickListener{
if (transacCategory == "N" || transacCategory == "Pick a category…" && binding.spinner2.isVisible) {
val text = "Please pick a category!"
val toast = Toast.makeText(applicationContext, text, duration)
toast.show()
} else if (transacAmount == 0.0) {
val text = "Please input an amount!"
val toast = Toast.makeText(applicationContext, text, duration)
toast.show()
} else {
val transaction = Transactions(0L, transacType, transacAmount, transacDate, transacCategory)
transactionViewModel.insert(transaction)
}
}
我不确定是否有必要,但这是日志中我不知道如何阅读的所有红色内容:
2021-04-02 17:25:54.438 22619-22619/com.example.budgie E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.budgie, PID: 22619
java.lang.RuntimeException: Unable to resume activity {com.example.budgie/com.example.budgie.AddTransactionActivity}: java.lang.NumberFormatException: empty String
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4789)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4832)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:190)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:105)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:8178)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
Caused by: java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at com.example.budgie.AddTransactionActivity.onResume(AddTransactionActivity.kt:72)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1465)
at android.app.Activity.performResume(Activity.java:8223)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4779)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4832)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:190)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:105)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:8178)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
PS。我知道我的代码中可能还有其他问题,但现在我只是想解决这个问题。
PSS。我是新人,请放轻松好吗?
【问题讨论】:
标签: android android-studio kotlin android-room