decimalFormat.format()错误
decimalFormat声明如下所示:
private var decimalFormat: DecimalFormat? = null decimalFormat = DecimalFormat("#.##########")
要传递给format()方法的值是:
private var valueOne= java.lang.Double.NaN private var valueTwo: Double = 0.toDouble()
我试图做一个计算器的应用程序,当我将valueOne传递给format()方法时,我得到的错误是在运算符按钮中:
binding!!.buttonAdd.setOnClickListener { computeCalculation() CURRENT_ACTION = ADDITION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "+") binding!!.editText.setText(null) } binding!!.buttonSubtract.setOnClickListener { computeCalculation() CURRENT_ACTION = SUBTRACTION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "-") binding!!.editText.setText(null) } binding!!.buttonMultiply.setOnClickListener { computeCalculation() CURRENT_ACTION = MULTIPLICATION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "*") binding!!.editText.setText(null) } binding!!.buttonDivide.setOnClickListener { computeCalculation() CURRENT_ACTION = DIVISION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "/") binding!!.editText.setText(null) } binding!!.buttonEqual.setOnClickListener { computeCalculation() binding!!.infoTextView.text = binding!!.infoTextView.text.toString() + decimalFormat.format(valueTwo) + " = " + decimalFormat.format(valueOne) valueOne = java.lang.Double.NaN CURRENT_ACTION = '0' }
我得到的错误是:
None of the following functions can be called with the arguments supplied: public final fun format(obj: Any!): String! defined in java.text.DecimalFormat public final fun format(number: Double): String! defined in java.text.DecimalFormat public final fun format(number: Long): String! defined in java.text.DecimalFormat
onCreate()方法的完整代码如下所示:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main) decimalFormat = DecimalFormat("#.##########") binding?.buttonDot?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + ".") } binding?.buttonZero?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "0") } binding?.buttonOne?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "1") } binding?.buttonTwo?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "2") } binding?.buttonThree?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "3") } binding?.buttonFour?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "4") } binding?.buttonFive?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "5") } binding?.buttonSix?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "6") } binding?.buttonSeven?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "7") } binding?.buttonEight?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "8") } binding?.buttonNine?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "9") } binding!!.buttonAdd.setOnClickListener { computeCalculation() CURRENT_ACTION = ADDITION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "+") binding!!.editText.setText(null) } binding!!.buttonSubtract.setOnClickListener { computeCalculation() CURRENT_ACTION = SUBTRACTION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "-") binding!!.editText.setText(null) } binding!!.buttonMultiply.setOnClickListener { computeCalculation() CURRENT_ACTION = MULTIPLICATION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "*") binding!!.editText.setText(null) } binding!!.buttonDivide.setOnClickListener { computeCalculation() CURRENT_ACTION = DIVISION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "/") binding!!.editText.setText(null) } binding!!.buttonEqual.setOnClickListener { computeCalculation() binding!!.infoTextView.text = binding!!.infoTextView.text.toString() + decimalFormat.format(valueTwo) + " = " + decimalFormat.format(valueOne) valueOne = java.lang.Double.NaN CURRENT_ACTION = '0' } binding!!.buttonClear.setOnClickListener { if (binding!!.editText.text.length > 0) { val currentText = binding!!.editText.text binding!!.editText.setText(currentText.subSequence(0, currentText.length - 1)) } else { valueOne = java.lang.Double.NaN valueTwo = java.lang.Double.NaN binding!!.editText.setText("") binding!!.infoTextView.text = "" } } }
请帮我解决这个错误。
请参阅DecimalFormat doc这里DecimalFormat文档
你对这个类的使用是错误的,错误信息是清楚的。 方法格式(obj:Any!)格式(数字:双)格式(数字:长)未定义。
你应该使用格式(double数字,StringBuffer结果,FieldPosition fieldPosition)
- 在Kotlin中开发的Android库模块导出到Java应用程序导致失败的解决方案:Lkotlin / jvm / internal / Intrinsics
- Android Studio 3 Canary中未解决的参考
- Intellij IDEA不显示Kotlin文件中的Android资源的可用建议
- 添加一个Fragment后,Android工作室分解了我的build.gradle文件
- 如何在Kotlin中设置回调?
- 如何在RxJava 2和Kotlin中将null传递给可空类型的Observable
- NoSuchMethodError使用Kotlin与新的Android数据绑定
- 如何使用ContextWrapper类与subscribeWith
- 在Kotlin中使用GsonTypeAdapter的AutoValue