【问题标题】:Convertin numbers from decimal to binary将数字从十进制转换为二进制
【发布时间】:2020-04-28 19:23:54
【问题描述】:

不要严格判断。我最近开始学习 kotlin,这是我的第一个项目。

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.EditText
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

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

    button1.setOnClickListener {
        val t1:EditText=findViewById(R.id.editText1)
        var p:Int=Integer.parseInt(t1.getText().toString())
        var f:String=""
        while (p != 0)
            p = p / 2
            f += p % 2
        f = f.reversed()
        val h = f.toIntOrNull()
        editText2.setText(h!!)
        }
    }
}

当我点击出现此错误的按钮时,它会滑出

E/AndroidRuntime: 致命异常: main 进程:com.example.myapplication,PID:6833 android.content.res.Resources$NotFoundException:字符串资源 ID #0x0 在 android.content.res.Resources.getText(Resources.java:351) 在 android.content.res.MiuiResources.getText(MiuiResources.java:97) 在 android.widget.TextView.setText(TextView.java:4562) 在 com.example.myapplication.MainActivity$onCreate$1.onClick(MainActivity.kt:23) 在 android.view.View.performClick(View.java:5647) 在 android.view.View$PerformClick.run(View.java:22465) 在 android.os.Handler.handleCallback(Handler.java:754)

【问题讨论】:

  • 请注意,由于缺少花括号,您的代码可以简化为var f = "0"

标签: android kotlin


【解决方案1】:

欢迎来到 Stack Overflow 和 Android/Kotlin 世界!

这里的问题是您使用整数调用 TextView#setText 。在android世界中,这用于将资源引用传递给android.R.string.ok之类的字符串,因此您正在尝试使用未定义的资源。 要使其工作,您需要将 f 传递给 setText: editText2.setText(f) 此外,正如 JB Nizet 在评论中所说,您错过了 while 语句后的括号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 2022-11-29
    • 2012-06-26
    • 2011-01-08
    • 1970-01-01
    • 2015-04-24
    • 2013-11-24
    相关资源
    最近更新 更多